Rene Schallner: software engineer turned AI researcher and engineer. I build the tools I use every day.
Rene Schallner

Hi, I’m Rene Schallner. I build software, tools and products where AI meets research. I run AI Research & Technology Lab in Vienna, where I’m building QualCode and LaBrowser. Before that: Chief Founding Engineer at ZML, eight years at NIM, medical tech and telecom.

Most of my side projects start with a question: can I do this without that? I build the thing, use it for real, and write down the verdict. The good ones grow up and get a successor. More about me.

Latest writing

Strategic CFO: Why I Needed to Automate My Reality Check

Context-Aware Brain: Why Generic AI Failed Me

Building a Memory for an AI That Wakes Up Fresh Every Day

Legibility is Leverage: Why Your Data Structure is Blocking AI

Why I Rotated the Kanban Board 90 Degrees

all posts →

The family tree

My projects aren’t a list. They’re a family tree: each line is a lineage, and the good ideas keep coming back in the next project.

A metro map of my projects. Notes line: sublime_zk, sublimeless_zk, telekasten.nvim, omajop, omajot. Web line: zap, bounded/http, baz, which serves the omajot hub. Slides line: Bûllets, slides, rayslides; bullets-server's multiplayer grew into rayslides' phone remote. No-cloud line: dockercr leads to omajot.

omajot is where the lines meet: notes from the green line, a hub served by baz from the orange one, and the no-cloud rule from the blue one.

Omarchy

The Omarchy wordmark above an Omarchy bar holding my five plugins: omagma, omajot, omajop, omapress and neomarchy.

Omarchy is my desktop. When I miss something in the bar, I write a plugin for it. There are five so far.

omagma

omagma terminal calendar: one week combining calendars from three Google accounts, with meetings and Meet links

Gmail and Google Calendar in the terminal. Threads, Vim keys and Markdown compose; one week across three accounts; meetings with Google Meet links, guests from Contacts, and a reminder that joins in the right Chrome profile. Plus a read-only bar dropdown and an agent CLI. Website →

omajot

The omajot main window on Omarchy

My own notes app, synced by my own hub. A dropdown and a main window in the bar, full keyboard control, and the same notes in the terminal and on my phone. Repo →

omajop

The omajop panel: folders and tags, notes, and the rendered note

A Joplin notes browser: folders and tags, the note list and the rendered note, one click away. omajot’s predecessor. When you’re ready to move, omajot imports Joplin in one command. Repo →

omapress

The omapress panel listing the latest Omarchy news

Omarchy news in the bar. The newspaper turns red when there are unread posts, and a keyboard-driven panel reads them without a browser. Works offline. Repo →

neomarchy

The neomarchy panel with favorite neowake sessions and a player

Search, favorite and play neowake sessions from the bar. Playback runs through mpv with MPRIS, so the media keys just work. Repo →

Install

Four of them are one command each:

u=https://github.com/renerocksai
for p in omajot omajop \
         omapress neomarchy; do
  omarchy plugin add $u/$p --enable
done

omagma ships as a verified release bundle: give your coding agent its website and let it walk you through the Google setup. omajot also needs its hub: see Get started.

Case studies

The question, the trade, the verdict.

Gmail and Calendar without a 2 GB browser tab?

omagma · Zig · TUI · Gmail · Google Calendar · agent CLI

One Gmail tab was using roughly 2 GB of RAM on my desktop. So omagma brings Gmail and Google Calendar into the terminal instead, for up to three accounts kept apart. The TUI does the whole job: threads, search, Vim keys, labels, attachments, invitations, and Markdown compose with a cancellable send countdown. Calendar shows all three accounts in one week, creates and reschedules meetings with Google Meet links and guests picked from Contacts, and reminds me ten minutes before a meeting, with Join opening in that account’s Chrome profile. A read-only dropdown in the Omarchy bar shows new mail at a glance, and a JSONL agent CLI lets agents work mail and calendar with only the per-account grants I approve. All of it is Zig: a static musl binary on Linux, and the same TUI controller even runs in the browser as WebAssembly.

Trade: always-open Gmail and Calendar tabs, for a terminal, a bar and an agent interface that each get exactly the permissions I grant them.

✓ verdict Mail and calendar in the terminal, and the bar holds three accounts in about 31 MB, against one 2 GB tab.

Synced notes with no cloud at all?

omajot · Zig · CRDT · WASM · Tailscale

Apple-Notes-like markdown notes in the Omarchy bar, in the terminal, and on my iPhone. No Dropbox: a small Zig hub syncs every device over Tailscale. The hub runs on my always-on M3 Max, the same box my coding agents already live on. Hub-and-spoke is a pattern I trust, so notes got the same treatment. A CRDT written in Zig merges concurrent edits, and the same Zig core runs natively on the desktop and as core.wasm in the phone’s web app. The hub is a baz app.

Trade: Dropbox’s zero-setup sync, for notes that never leave my own machines, work offline, never conflict, and that agents can script.

✓ verdict Daily driver. My notes live there now.

A container registry with nothing but SSH?

dockercr · Docker · SSH

omajot’s older sibling in spirit. ghcr.io has download limits. A self-hosted registry wants TLS, a CA and access tokens. dockercr skips all of it: the registry only listens on loopback, and SSH port forwarding does the authentication and the encryption. No Docker Hub, no certificates.

✓ verdict Push to production like a boss.

Fast, and never past its limits?

bounded/http + baz · Zig 0.16 · io_uring · kqueue · IOCP

Zap made Zig backends blazingly fast on top of facil.io, a C library. bounded/http replaces that foundation with pure Zig on io_uring, kqueue and IOCP, inspired by TigerStyle: connections, buffers, queues and workers are reserved up front. When capacity runs out, it pushes back instead of growing. On Linux it needs no libc, so a server can be one static binary. Baz (Bounded Async Zap) puts Zap’s typed endpoints on top, with streaming, SSE, Mustache templates and cookies.

✓ verdict Good enough to trust with my notes: it runs the omajot hub.

Can I build the CPU I drew in the nineties?

rrisc · VHDL · FPGA

In the early nineties I designed a small Radical RISC CPU on paper. At Christmas 2020 I finally built it: VHDL, simulated with ghdl and gtkwave from vim and tmux, with its own assembler, running on a Xilinx Spartan-7 FPGA board. The whole story is written up, from microcode sketches to the first executed instruction.

✓ verdict Nearly thirty years late, and it runs.

Can slides stay plain text and still not suck?

rayslides · Zig · raylib

My third answer to the same question. Bûllets (2020) turned the Godot game engine into a slide show: interactive animations, a game in your deck, and a multiplayer mode. Slides (2021, my first Zig project) went small: one executable, Dear ImGui and OpenGL, a markdown-ish text format, at 10 000 FPS. rayslides, built on raylib, keeps the readable source and adds a visual Studio that stays in sync with it, reveals, transitions and morph animations, and an embedded Neovim. Bûllets’ multiplayer grew up, too: it’s now a phone remote with speaker notes, plus Crowdplay audience polls.

✓ verdict Nobody has noticed I’m not using PowerPoint.

Can a database built for money sell conference tickets?

TigerFans · TigerBeetle · FastAPI · Python

A ticket booking system on TigerBeetle. Tickets and goodies are accounts and transfers. A checkout places a time-limited hold, a pending transfer, and the payment webhook either finalizes or voids it. It uses FastAPI, Redis and PostgreSQL, has load tests, and I wrote an auto-batcher for the async TigerBeetle client along the way. The write-up has the details, or try it live.

✓ verdict If you can reserve it or run out of it, TigerBeetle can count it.