Projects
What I’m working on right now. Everything lives on GitHub (opens in a new window) .
nuntio

A fast, GPU-rendered terminal emulator in Rust for Linux, macOS and Windows: one window with tabs and split panes, configured by a single TOML file that reloads on save. The terminal emulation comes from alacritty_terminal; the window, the panes, the wgpu renderer and the config are nuntio’s own. It is built for working with coding agents. Programs show images inline over the Kitty and iTerm2 protocols, a pasted screenshot arrives as a file path that Claude Code and omp attach to the prompt, and herdr’s agents report their status in the tab bar. On Windows, WSL panes run in a real Linux PTY instead of ConPTY. It ships twenty themes, a terminal UI for its settings and a small Markdown notes app. The current release is 0.3.2, under MIT or Apache-2.0.
Repository (opens in a new window) · Docs (opens in a new window) · Posts: nuntio , nuntio 0.3.0
Schwitzer

A task room for coding agents and the people who run them: someone opens a room without signing up and shares its key. Humans or agents note ideas and propose tasks, humans accept them, an agent writes a plan, a human approves it, and agents build the approved tasks one at a time, each claiming the next free one. Accepting, approving, rejecting, replanning and reopening are buttons in the app, never agent tools. The app is a narrow window for Linux, Windows and macOS, written in Rust with iced, that sits beside the editor; omp agents work through a plugin it installs into linked repositories, and their live sessions show in the room, while sessions outside those repositories never leave the machine. Rooms live on a standalone schwitzer-server, which clients reach over QUIC with mutual TLS. The current release is 0.1.8, under MIT or Apache-2.0.
Repository (opens in a new window) · Website (opens in a new window) · Post: Schwitzer
vellum

The Hugo theme this site runs on. It sets every page as an engineering drawing sheet: a drawn frame, a lettered zone rail indexing the sections, and a ruled title block instead of a grey caption line. The reading column is 800px wide, 92 characters at the 20px body size, so an 80-column terminal paste does not wrap. It is multilingual, searches client-side over the site’s own JSON index, switches between light and dark without JavaScript, resizes bundle images to a WebP ladder and self-hosts its two fonts in about 121 KB. The home page can also be a working shell. The current release is 0.3.2 and needs Hugo extended 0.158 or later.
Repository (opens in a new window) · Demo (opens in a new window) · Post: Vellum
gsichtl

A Rust crate that turns any seed, a user id for instance, into a deterministic pixel-art avatar. The same seed always gives the same picture, so a client draws it locally and nothing has to be stored or sent. It draws six kinds: 8×8 monsters and nerdy faces, 10×10 crests, 12×12 badges, and 20×20 floating islands and retro game sprites. The nerdy face alone has 1,327,104 variants. The seed is mixed with BLAKE3, the crate’s only dependency, PNG output sits behind a feature flag, and unsafe is forbidden. Gsichtl is Bavarian for “little face”. The current release is 0.4.0 on crates.io.
Repository (opens in a new window) · Post: gsichtl
cerno

Typed decisions from a locally hosted model. A question goes to the model as a one-token prompt, and cerno reads the probabilities of the answer letters instead of parsing generated text. There are three primitives: noul, a yes or no as a probability; choice, one of up to 20 options; and score, a level on a rubric. Three questions take 85 ms on a 4 GB model. It is a Rust service with an HTTP API, a terminal front end and SDKs for Rust, Python and TypeScript. It talks to Ollama, vLLM, llama.cpp, LM Studio or any OpenAI-compatible endpoint. The current release is 0.1.4.
Repository (opens in a new window) · Docs (opens in a new window) · Posts: cerno , cerno on System One
angular-highcharts

The Angular wrapper for Highcharts, which I have maintained since April 2016. It provides a [chart] directive and typed Chart, StockChart, MapChart and HighchartsGantt classes, so Highcharts, Highstock, Highmaps and Gantt charts are all used the same way, and addPoint() updates a chart live. The major version follows Angular’s: 22.0.7 needs Angular 22 and Highcharts 12 or later. It is tree-shakeable, and its only runtime dependency is tslib. The live gallery shows eleven chart types, from a line chart to a world map and a Gantt chart.
Repository (opens in a new window) · Demo (opens in a new window) · npm (opens in a new window)
dotfiles
My dotfiles for macOS and Ubuntu, including Ubuntu under WSL2. One entry point, ./dot install, detects the platform and installs the packages, from a Brewfile on macOS and an apt list on Ubuntu. It then symlinks the configs from home/ into $HOME and sets up git, the locale and the login shell. It is idempotent, and ./dot doctor checks the result. The shell is zsh with antidote and starship, and the editor is Helix. On WSL, open hands files and URLs to Windows. It also carries my omp profiles, one for Claude and one for a local Ollama model. A bats suite tests the scripts.