Software
Tools I built because I needed or wanted them, put out in the open in case they are useful to someone else. Everything here is public on GitHub, and everything here is running somewhere.
Capstan
A web-based Docker Compose stack manager with git integration, backups and a built-in terminal.
I run enough self-hosted infrastructure that the existing compose managers ran out before my needs did: no git integration, no backups, and no way to see which images had updates waiting. Capstan covers the whole loop. Stacks, logs with per-container filtering, an in-browser shell, restic snapshots with optional rclone sync, and git status and diffs for stacks that are version controlled.
It ships as a single multi-arch container serving the API and the UI on one port, running as a non-root user.
Hugin Stitch GUI
A local web UI for panorama stitching that drives the Hugin command-line tools.
Hugin stitches panoramas well and asks a lot of you to get there. This puts a browser in front of its command-line tools: drop the frames in, reorder them, pick a projection, get a panorama back. The server is one Go binary with the UI embedded, and the photos never leave the machine running it.
Most of the work went into the parts that decide whether the result is usable. Control points found in drifting cloud and moving water are discarded before solving, which is where a bowed horizon usually starts, and exposure differences are measured from the overlaps between frames rather than taken from EXIF.
TUI Goggles
Lets LLMs and automated systems see terminal applications as clean text rather than escape sequences.
An LLM that runs a terminal application gets raw ANSI escape sequences back, which tell it almost nothing about what is on screen. TUI Goggles runs the command inside a virtual terminal, resolves the sequences, and returns the screen as a plain text grid.
It can also send keystrokes, wait for the screen to settle, and assert that expected text appeared, which makes it a test harness for terminal interfaces as well as a pair of eyes for an agent.
watcher-watch
Shows which processes are using the most inotify file watchers on a Linux system.
Linux caps how many inotify watchers it will hand out, and when a system reaches
that ceiling, editors and dev servers start failing in ways that never name the
cause. watcher-watch reads /proc and shows which processes hold the watches,
sorted by count and measured against the system limit.
One Go binary, no dependencies, written the afternoon I lost to diagnosing this by hand.
All of this is written with AI assistance, which is the point rather than a caveat: it is what closed the distance between needing a tool and having one. More on that on the about page.