The Stack
Everything below runs something I actually use — most of it every day. Here is how the pieces sit on top of each other.
How it fits together
Top is what I touch. Bottom is what it all runs on. Hover a layer for what it does.
The three windows open all day. Everything else I only see when it breaks.
Where a prompt becomes a plan — state, tools, and the loop that decides what to do next.
The layer that turns all of it into something another system can call.
Retrieval and inference. Private work stays on the Mac Mini; the rest goes to Vertex.
Containers, TLS, and a private mesh — so nothing above has to care where it is running.
Two boxes. One travels, one never sleeps.
Daily drivers
The ones I would replace first if they disappeared tomorrow.
MacBook Pro 14"
HardwareM4, 24GB, 2024. The work machine — client projects, heavy builds, and anything that has to travel.
Mac Mini
HardwareM4, 10 cores, 32GB, 2024. The personal machine, and the always-on server every self-hosted service on this page runs on.
VS Code
DevelopmentBack to a plain editor. Cursor held this seat for close to two years; once Claude Code moved the agent into the terminal, the editor went back to being an editor.
Claude Code
DevelopmentTerminal-first, so it lives where the work lives. Best at the tasks I can describe but do not want to type.
LangGraph
AI & MLIn production for climate-data workflows. Chose it over plain chains the first time an agent needed to remember what it had already tried.
n8n
AutomationSelf-hosted on the Mac Mini and quietly running most of my life. 3 of my workflow templates are in the official n8n gallery.
Docker
InfrastructureThe reason "works on my machine" stopped being a sentence I say. Compose files are the real documentation for every project here.
Ghostty
DevelopmentReplaced Warp in 2025. Native, fast, no config-file bankruptcy — and now where most of the work happens, since Claude Code lives here.
Everything else
Tap any tool for the reason it is here.
What changed
A stack that never moves is a stack nobody uses.
after nearly two years on Cursor, the agent moved to the terminal and the editor went back to being an editor
wanted the experience firsthand — it stayed a test, not a tool
native rendering, and a config I own
self-hosted services should not depend on a laptop lid being open