I Hated Every Coding Agent, So I Built My Own — Mario Zechner (Pi)
Key Takeaway
Building a malleable, 600-line minimal core for coding agents outperforms feature-heavy 'spaceship' harnesses by prioritizing context transparency, prompt cache stability, and user-defined tool extensibility.
Highlights
Most coding agents inject hidden text into LLM prompts behind the user's back, causing unpredictable behavior when tool vendors update their internal prompts.
The Terminus agent performs at the top of the Terminal Bench leaderboard using only a TMUX session and raw keystrokes, proving that complex 'spaceship' features are often unnecessary for high performance.
OpenCode's session compaction prunes all results before the last 40,000 tokens on every turn, which negatively impacts prompt caching efficiency and infrastructure stability.
Pi consists of a minimal 600-line terminal user interface and a system prompt of only 457 tokens because frontier models are already heavily RL-trained to understand coding tasks.
Custom extensions in Pi, such as SSH-based file tools or custom UI for front-end annotation, can be implemented in as little as five minutes using TypeScript.
The 'Vouch' project and human verification files in repositories prevent 'clanker spam' by auto-closing pull requests from unverified AI-automated accounts.
Timeline
The Evolution and Failure of Coding Agent UX
Early tools like the original GitHub Copilot often recited GPL code or failed to integrate with complex logic. Claude Code revolutionized the genre by using reinforcement learning to let models explore codebases ad-hoc with bash tools. However, as these tools added more features, they became less predictable, leading to a loss of control for experienced engineers who value simple, stable tools.
- Coding tools evolved from simple ChatGPT copy-pasting in 2023 to agentic search models like Claude Code in 2025.
- Feature bloat has turned leading tools into 'spaceships' where users only understand 10% of the functionality.
- The shift toward 'vibe coding' prioritizes automated features over the developer's need for predictable and observable workflows.
Technical Debt and Infrastructure Abuse in Open Source Agents
Tools like OpenCode suffer from architectural issues where every message becomes a separate JSON file on disk, indicating a lack of long-term planning. Forcing LSP feedback onto an agent while it is in the middle of a multi-file edit provides 'false' error signals that cause the model to give up. Furthermore, constant context manipulation and inefficient token pruning strategies create friction between tool developers and LLM providers like Anthropic.
- Hidden prompt injections by tool vendors break existing developer workflows during silent updates.
- Enabling Language Server Protocol (LSP) feedback during active editing sessions confuses LLMs because code rarely compiles mid-edit.
- Architecture flaws in existing open-source harnesses lead to security vulnerabilities like default remote code execution.
The Minimalist Performance of Terminal Bench
Terminal Bench evaluates agents on 82 diverse tasks ranging from window setup to Monte Carlo simulations. The success of the Terminus agent, which only sends keystrokes and reads VT sequences, challenges the necessity of 'spaceship' features. This evidence suggests that the industry is still in a 'messing around and finding out' stage where the ideal balance of human-agent interaction is yet to be established.
- The Terminus agent achieves top-tier results on the Terminal Bench leaderboard using only a bare-bones TMUX interface.
- Minimalist interfaces prove that sub-agents, web search, and complex file tools are not requirements for agentic success.
- Current industry standards for the 'perfect' coding harness remain undefined as the field oscillates between autonomy and minimalism.
Pi: A Malleable and Extensible Coding Architecture
Instead of built-in 'plan modes' or 'to-do' trackers, Pi encourages users to use persistent Markdown files or TMUX for sub-agent observation. This approach ensures all inputs and outputs are visible to the human operator. Extensions like PyAnnotate or SSH-based file tools allow the agent to be adapted to specific project environments without forking the entire codebase.
- Pi utilizes a minimal core consisting of an AI abstraction layer, an agent loop, and a 600-line TUI.
- The system prompt is stripped to 457 tokens to leverage the model's inherent training rather than redundant instructions.
- The architecture replaces built-in features with user-defined TypeScript extensions that hot-reload instantly.
Protecting Open Source from AI Automation Spam
The rise of coding agents has led to a surge in 'clanker filth'—automated PRs that overwhelm maintainers. Implementing an 'OSS vacation' or auto-closing PRs from accounts not listed in a verification markdown file restores order. This strategy forces contributors to introduce themselves as humans before their code is considered, preserving the integrity of the development process.
- Automated 'clanker' accounts frequently spam open-source repositories with AI-generated issues and pull requests.
- Human verification via 'Vouch' or account whitelisting prevents repository exhaustion.
- Mandating a human voice in issue descriptions filters out low-effort automated contributions.
Description
Game development veteran, creator of libGDX, and 17-year open-source contributor Mario Zechner tells the story of how he ended up building pi, his own minimal, opinionated terminal coding agent. It started in April 2025 when Peter Steinberger and Armin Ronacher (Flask, Sentry) dragged him into an overnight AI hackathon. Within weeks, Mario was hooked on Claude Code — until he wasn't. There was feature bloat, hidden context injection that changed daily, the infamous terminal flicker, and zero extensibility for power users. He then surveyed the alternatives — Codex CLI, Amp, OpenCode... Eventually, he came across Terminus — an agent that gives the model nothing but a tmux session and raw keystrokes. If that's enough for the model to perform, what are all those extra features actually doing? Mario's thesis: we're still in the "messing around and finding out" stage, and coding agents need to become more malleable so developers can experiment faster. Pi is his answer: four tools (read, write, edit, bash), the shortest system prompt of any major agent, tree-structured sessions, full cost tracking, hot-reloading TypeScript extensions, and nothing injected behind your back. No MCP, no sub-agents, no plan mode — but all of it buildable in minutes through extensions. The community has already shipped pi-annotate (visual frontend feedback), pi-messenger (a multi-agent chatroom), and someone even got Doom running. On TerminalBench, pi with Claude Opus 4.5 landed right behind Terminus — before it even had compaction. 🔗 LINKS & RESOURCES pi coding agent: https://pi.dev Mario Zechner: https://mariozechner.at Peter Steinberger / OpenClaw: https://github.com/steipete Armin Ronacher: https://lucumr.pocoo.org Claude Code: https://docs.anthropic.com/en/docs/claude-code Aider: https://aider.chat OpenCode: https://github.com/anthropics/opencode Amp (Sourcegraph): https://sourcegraph.com/amp TerminalBench: https://terminalbench.com Ghostty: https://ghostty.org Vouch: https://github.com/mitchellh/vouch libGDX: https://libgdx.com AI Engineer London is a community meetup for engineers and founders building with AI, covering everything from agent frameworks and RAG pipelines to LLMs in production. Each event features technical talks, live demos, and hands-on networking. This talk was recorded at AI Engineer London #10, hosted by Tessl, in collaboration with AI Engineer London. AI ENGINEER LONDON 📅 Events: https://lu.ma/aiengineerlondon 💼 LinkedIn: https://linkedin.com/company/ai-engineer-london-meetup 📚 MASTRA RESOURCES Mastra: https://mastra.ai Learn Mastra in the world's first MCP-Based Course: https://mastra.ai/course Principles of Building AI Agents (Book): https://mastra.ai/books/principles-of-building-ai-agents Patterns for Building AI Agents (New Book): https://mastra.ai/books/patterns-of-building-ai-agents MASTRA? Mastra is an open-source TypeScript framework designed for building and shipping AI-powered applications and agents with minimal friction. It supports the full lifecycle of agent development—from prototype to production. You can integrate it with frontend and backend stacks (e.g., React, Next.js, Node) or run agents as standalone services. If you're a JavaScript or TypeScript developer looking to build an agentic or AI-powered product without starting from first principles, Mastra provides the scaffolding, tools, and integrations to accelerate that process. 📑 CHAPTERS 00:00 Intro 02:17 The history of coding agents: ChatGPT → Copilot → Aider → Claude Code 04:52 What Claude Code got right — and where it became a spaceship 06:04 Claude Code Drawbacks 09:39 Claude Code Alternatives 11:38 OpenCode's compaction problem and prompt cache busting 12:51 Why LSP feedback mid-edit is a terrible idea 14:26 OpenCode's architecture issues and security vulnerability 16:06 TerminalBench and Terminus 18:13 Mario's Two Theses 19:08 Introducing pi — strip everything, build a minimal extensible core 20:01 The system prompt 21:18 What's not in pi — and what you build instead 22:40 Extensions: custom tools, custom UI, hot reloading 24:00 Community extensions 24:59 Tree-structured sessions, cost tracking, HTML export 25:33 TerminalBench results 25:54 Open source under siege and human verification
