Armin Ronacher's setup: from Cursor to the agent he now builds
Published
Armin Ronacher wrote Flask, Jinja, Click and later MiniJinja and insta. He spent about a decade at Sentry, left in 2025 and started Earendil in Vienna. His blog, lucumr.pocoo.org, turned into a running log of how he works with agents, and his dotfiles and agent-stuff repositories fill in the rest. Together they date almost every change below.
Early 2025: Cursor and local models
In January 2025 he described his setup. Cursor, “a fork of Visual Studio Code with AI-based auto completion and code generation built-in,” was “my go-to for programming with AI assistance at the moment.” Next to it ran ChatGPT on his phone, local models through Ollama on a MacBook Pro M1 Max, and Simon Willison’s llm, installed with uv. A small llm-spell script fixed up prose from inside Vim.
Mid 2025: Claude Code and back to Vim
Looking back in December, he dated the change to “a growing obsession with Claude Code in April or May.” By June he had written it down: “I predominently use Claude Code with the cheaper Max subscription for $100 a month,” Sonnet only, with an alias called claude-yolo that skips every permission check. The editor lost its place: “the role of the IDE — and the role of AI in the IDE — is greatly diminished; I mostly use it for final edits. This approach has even revived my usage of Vim, which lacks AI integration.”
The same post recommended Go for new backends because agents handle it well, with React, Tailwind, TanStack and Vite on the frontend and PostgreSQL reached through psql. The only MCP server he used was Playwright MCP for the browser. By August he was replacing it with an MCP that runs Playwright code directly, and in November with a skill of his own that drives Chrome over the DevTools protocol.
Autumn 2025: Codex for review, Amp on trial
In September he wrote: “Today I use Claude Code and Codex. Each has strengths, but the constant is Codex for code review after PRs.” Claude was “indispensable still when debugging and needing a lot of tool access,” and “the working together of the two is where it’s most magical.” In November he started trialing Amp: “Amp, similar to Claude Code, really feels like a product built by people who also use their own tool.” The same month he opened agent-stuff for his skills, starting with the browser skill and one that drives tmux.
By the end of the year he was running three: “I’m using Amp, Claude Code, and Pi, all from the command line. Amp feels like the Apple or Porsche of agentic coding tools, Claude Code is the affordable Volkswagen, and Pi is the Hacker’s Open Source choice for me.”
2026: Pi
The choice settled quickly. In January he ported MiniJinja to Go with Pi, using its session branching to split the work into phases, with Claude Opus for the port and GPT-5.2 Codex for the overnight test fixing. At the end of the month he wrote that Pi, Mario Zechner’s agent, “happens to be, at this point, the coding agent that I use almost exclusively.” What drew him: “it has the shortest system prompt of any agent that I’m aware of and it only has four tools: Read, Write, Edit, Bash,” plus an extension system that lets extensions keep state in the session.
He builds most of his workflow as those extensions. agent-stuff, published to npm as mitsupi, holds commands such as /review, /todos, /goal and a serial subagent that runs in tmux, plus a /split-fork command that opens a branched session in a new Ghostty split. Another extension intercepts pip and python so agents use uv. In April Mario joined Earendil, and Pi became part of the company’s work. Pi 1.0 shipped this autumn with MCP support through Codemode, which lets the model call tools by writing code in a sandbox.
He still writes about other harnesses, mostly as a critic. In July he argued that “Claude Code is not open source and we cannot really know what they are doing in their RL environments,” and that other harnesses inherit its quirks. Pi runs whichever model fits: in September he had “a conversation with Fable and Sol via Pi,” and in May he built pi-ds4 to run DeepSeek V4 Flash locally on a Mac from inside Pi.
The rest of the desk
His dotfiles show the setup around the agent. He uses zsh with Oh My Zsh and his own theme, and Homebrew on macOS. In March 2026 the editor variable switched from vim to nvim, so Neovim is now his terminal editor. VS Code is still there for diffs: git uses code --diff as its difftool, and he updated its settings in September 2026. His code stays on GitHub. He defended it against Codeberg’s ban on largely AI-written projects, even though “there is plenty about the platform that I dislike.”
His recent repositories are mostly Rust: MiniJinja, insta, similar and deser. Pi and its extensions are TypeScript, and Earendil’s durable workflow engine, Absurd, runs on PostgreSQL with a Python SDK.
What the stack says
Few developers have tried as many agents in public. He moved from Cursor to Claude Code, added Codex and Amp, and then settled on the smallest agent he could find and built the rest himself. His reason has stayed the same since 2025: he wants a harness he can read and change, and the agent should write code rather than call a long list of tools.