Thanks to Armin Ronacher, I learned about the pi coding agent. Mario Zechner’s blog post on what he learned building pi outlines his underlying principles in creating an agentic coding framework:
In the past three years, I’ve been using LLMs for assisted coding. If you read this, you probably went through the same evolution: from copying and pasting code into ChatGPT, to Copilot auto-completions (which never worked for me), to Cursor, and finally the new breed of coding agent harnesses like Claude Code, Codex, Amp, Droid, and opencode that became our daily drivers in 2025.
…
So what’s an old guy yelling at Claudes going to do? He’s going to write his own coding agent harness and give it a name that’s entirely un-Google-able, so there will never be any users. Which means there will also never be any issues on the GitHub issue tracker. How hard can it be?
To make this work, I needed to build:
- pi-ai: A unified LLM API with multi-provider support (Anthropic, OpenAI, Google, xAI, Groq, Cerebras, OpenRouter, and any OpenAI-compatible endpoint), streaming, tool calling with TypeBox schemas, thinking/reasoning support, seamless cross-provider context handoffs, and token and cost tracking.
- pi-agent-core: An agent loop that handles tool execution, validation, and event streaming.
- pi-tui: A minimal terminal UI framework with differential rendering, synchronized output for (almost) flicker-free updates, and components like editors with autocomplete and markdown rendering.
- pi-coding-agent: The actual CLI that wires it all together with session management, custom tools, themes, and project context files.
My philosophy in all of this was: if I don’t need it, it won’t be built. And I don’t need a lot of things.
One of the things about this new era of agentic coding that excites me is the Cambrian explosion of interaction paradigms. I’m just using a few of the popular TUIs and cloud agents as an individual developer. Within that regime, the space of available tools and refinement mechanisms (MCP, skills, hooks, agent-specific CLI tools, extensions, and version-control integration) can seem overwhelming.
pi looks like a well-designed, highly opinionated, modular approach. In 2026, I’m going to invest some time seeing if I can be productive with pi. Once that succeeds, I’ll go a level deeper and see if I can’t customize pi into a tool that fits my hand well.