Building Roost: a terminal I extend and use daily
Why I built my own terminal: a native macOS and Linux app on libghostty, organized by project, with quick theme/font switching and scriptable launch points for the commands I run most.
Why I built Shed: running agents in sandboxes should be easier
Dev containers were not the shape I wanted, and I wondered if building for my own agent workflow could be simpler: isolated VMs on my machines, local or remote, with credentials brokered from the host.
Reviewing agent diffs: the design behind Strix
How a git-diff idea for Roost became a standalone TUI: I no longer need to open VS Code or Cursor just to view a diff. Side-by-side diffs, history, first-class mouse support, themes, and a Rust core built on ratatui and gitoxide.
Why Prox is API-first
Why the process manager I run my dev stack with exposes logs, process control, and proxy requests over an API first, so agents can inspect failures without me copying text around.
What bytecode can tell an agent that grep can't
The story behind Codelens: watching an agent unzip jars to read dependency source, why a language server was not the first answer, and what a persistent bytecode index might give a coding agent that grep can't.
Syncing .env files across my machines
Why I built a small, single-user CLI to keep .env files in sync across my machines and sheds, and why it may stay a stopgap rather than a full secret manager.