Building Pi: A Minimal, Extensible Coding Agent Framework

pi · Tech · 2026 · source Agentic: yes · promotional bias: low · source-backed · extracted with prompt 0.5.5 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Extensible coding-agent frameworks

Pi addresses the problem that many coding-agent harnesses became opaque, feature-heavy, difficult to extend, weak at context management, and tied to specific providers or workflows. The project tests whether a minimal agent core with strong extensibility, model choice, observability, and user-controlled workflow primitives can perform competitively without copying every built-in feature from commercial coding agents.

Constraints:

Architecture

Pi is built as a minimal, extensible coding-agent framework. Its core consists of an AI package for multiple providers and transports, an agent core with a generalized agent loop, tool invocations and verification, a small terminal UI, and the coding agent itself as both SDK and TUI. The built-in tool surface is intentionally limited to read, write, edit, and bash. Everything else is pushed into TypeScript extensions that hot-reload: custom tools, UI, skills, prompt templates, themes, providers, permission gates, compaction strategies, and overrides for the built-in file/bash tools. Pi keeps sessions as trees, exposes cost tracking and export/streaming paths, and relies on external primitives such as tmux, markdown files, CLI tools, and containerization rather than baking in sub-agents, plan loading, MCP, background bash, or approval prompts.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  ai-provider-package["AI provider package"] --> agent-core["Agent core"]
  agent-core --> built-in-tool-set["Built-in tool set"]
  agent-core --> typescript-extension-loader["TypeScript extension loader"]
  typescript-extension-loader --> custom-tools["Custom tools"]
  typescript-extension-loader --> custom-ui["Custom UI"]
  typescript-extension-loader --> custom-providers["Custom providers"]
  custom-providers --> ai-provider-package
  typescript-extension-loader --> permission-gate-extensions["Permission gate extensions"]
  typescript-extension-loader --> tool-override-extensions["Tool override extensions"]
  tool-override-extensions --> built-in-tool-set
  typescript-extension-loader --> custom-compaction["Custom compaction"]
  custom-compaction --> session-tree["Session tree"]
  agent-core --> session-tree
  agent-core --> terminal-ui["Terminal UI"]
  agent-core --> headless-sdk["Headless SDK"]
  terminal-ui --> export-and-streaming["Export and streaming"]
  headless-sdk --> export-and-streaming
  terminalbench["TerminalBench"] --> headless-sdk
  oss-access-gate["OSS access gate"]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
AI provider package Provider abstraction over multiple model transports that allows switching providers inside the same session. Agent core
Agent core Generalized loop for model calls, tool invocations, verification, and streaming. Built-in tool set, TypeScript extension loader, Session tree, Terminal UI, Headless SDK
Built-in tool set Minimal read, write, edit, and bash tools provided by default. Tool override extensions
TypeScript extension loader Loads and hot-reloads project or task-specific extensions for tools, UI, providers, prompts, skills, themes, compaction, and gates. Custom tools, Custom UI, Custom providers, Permission gate extensions, Tool override extensions, Custom compaction
Custom tools User-defined LLM tools implemented outside the core. Agent core
Custom UI Extension-provided UI components and themes with full tree access. Terminal UI
Custom providers User-registered proxies, self-hosted models, or alternate model providers. AI provider package
Permission gate extensions Optional approval or policy gates implemented by users when wanted. Agent core
Tool override extensions Overrides of read, write, edit, and bash, including remote execution variants such as SSH. Built-in tool set
Custom compaction User-controlled compaction strategies instead of a hardcoded pruning algorithm. Session tree
Session tree Branchable conversation state for summarization, sub-agent-like workflows, and observability. Export and streaming
Terminal UI Small terminal interface for interactive use. Export and streaming
Headless SDK Programmatic mode for embedding Pi in other workflows. Export and streaming
Export and streaming HTML export, JSON formats, headless JSON streaming, and cost visibility for audit and integration. —
TerminalBench External evaluation harness used to compare Pi against other agent/model combinations. Headless SDK
OSS access gate Repository-level human-verification system for filtering low-quality AI-generated issues and PRs. —

Data flow

A user runs Pi as a TUI or SDK. The coding agent sends conversation state into the agent core, which calls the AI provider abstraction and invokes the small built-in tool set or any loaded TypeScript extensions. Extensions can override file and shell operations, add custom tools/UI/providers, implement compaction or permission gates, and hot-reload while the agent is running. Session state is held as a tree so the user can branch, summarize, return to the root, and preserve observability. Outputs can be inspected through the TUI, exported as HTML/JSON, streamed headlessly, or evaluated through external harnesses such as TerminalBench.

7 supporting quotes
“probably all going to adapt. So the basic idea was and it's very simple and not rocket science, strip away everything and build a minimal extensible core. >> [snorts] >> There's some creature comforts. It's not a blank slate. So that's Pi um and the general motto is uh adapt”transcript, stated
“It comes with four packages uh an AI package which is basically just a simple abstraction over multiple providers”transcript, stated
“the agent core which is just a a generalized agent loop with tool invocations, verification, and so on and so forth. And streaming um uh a terminal user interface that's like 600 lines of code. >> [laughter] >> And works really well surprisingly uh because”transcript, stated
“that you I think that's the best basis compared to guardrails like approval or dialogues. It only has four tools, read a file, write a file, edit a file, and bash. Bash is all you need. What's not in there? No MCP, no sub agents, no plan load, no background bash, no built-in to-do's.”transcript, stated
“You don't need to hear it. You just write a simple TypeScript file and it gets loaded automatically. You can also write custom UI. Uh, skills are obviously in there, prompt templates, uh, themes uh, and you can bundle all of that up, put it on NPM or Git,”transcript, stated
“Uh, Pi also comes with tree structure. Not going to explain that. Just look at pi.dev. Um, your session is a tree, not a linear list of chats. So, you can basically do sub agents by read all the files in the directory, summarize this, go back to my my root of the”transcript, stated
“full cost tracking. A lot of harnesses don't do this. Yeah, open code does it not well. Uh, HTML export, JSON formats, headless JSON streaming, blah blah blah. Does it actually work? Well, terminal bench. Let me zoom in here. I can't. This is amazing. Here's Pi right”transcript, stated

Why this architecture

Pi chooses a small core because the speaker believes the industry has not yet converged on the right coding-agent architecture and needs a malleable substrate for experimentation. TerminalBench's Terminus result is used as evidence that a minimal interface can perform strongly, so Pi avoids hardcoding MCP, sub-agents, plan loading, background bash, to-do lists, LSP feedback, and approval gates. Instead it exposes extension points so developers can implement those features when they fit a workflow, while preserving observability, model choice, and control.

5 supporting quotes
“nobody has any idea what the perfect coding agent should look like or what the perfect coding harness should look like.”transcript, stated
“should look like ideally and what will become the industry standard. And the second thing is we need better ways to mess around uh with coding agents. That is we need them to be able to self-modify them uh selves and become malleable so we can quickly experiment with ideas”transcript, stated
“the general motto is uh adapt your coding agent to your needs instead of the other way around. It comes with four packages uh an AI package which is basically just a simple abstraction over multiple providers which all speak different transport protocols. Um”transcript, stated
“the smallest most minimal interface uh a model can have uh to to your computer, right? And this performs like top of the line of the entire leaderboard. So what does this tell us about existing coding agents harnesses? Do we need all these features for the models to actually”transcript, stated
“all of these features all of these coding harnesses have might not neces- might not be necessary to um get good results out of agents.”transcript, stated

Models used: Claude Opus 4.5 · Anthropic Claude models · Codex · Frontier models · Custom providers · Self-hosted models

Scale

Alternatives considered (roads not taken)

Feature-rich coding-agent spaceships.

Rejected because: The speaker argues that hidden feature bloat makes it hard to know what the agent is doing and destabilizes developer workflows.

3 supporting quotes
“cloud code is now a spaceship. It does so many things that you actually probably ever use like 5% of what it offers.”transcript, stated
“Nobody knows what it's actually doing. And I personally find this not to be very helpful because I still think that you kind of need to know what the agent is doing. This guy might disagree to some degree. Um and we're here at Tessel and they also like”transcript, stated
“knows what it's actually doing. And I personally find this not to be very helpful because I still think that you kind of need to know what the agent is doing. This guy might disagree to some degree. Um and we're here at Tessel and they also like context management, right? Or context”transcript, stated

Hardcoded context pruning before the last 40,000 tokens.

Rejected because: Pi favors extensible/custom compaction because the OpenCode pruning approach destroys prompt-cache behavior.

3 supporting quotes
“problem with Open Code is that it's also not very good at managing your context. Uh for example on each turn it's calling session compaction.prune which does the following. It prunes all tool results um before the last 40,000 tokens. Now who here knows what prompt caching”transcript, stated
“Uh for example on each turn it's calling session compaction.prune which does the following. It prunes all tool results um before the last 40,000 tokens. Now who here knows what prompt caching is? Right. What does this do to your prompt cache? Lost the prompt cache. Yes. So”transcript, stated
“results um before the last 40,000 tokens. Now who here knows what prompt caching is? Right. What does this do to your prompt cache? Lost the prompt cache. Yes. So Open Code and Anthropic had an interesting history and eventually Anthropic in my opinion um rightly so said, "Dudes,”transcript, stated

Injecting LSP errors after every individual edit.

Rejected because: The speaker says intermediate compile errors are often expected during a multi-edit task and mislead the model before the natural synchronization point.

4 supporting quotes
“the right here. Um don't mess with the infrastructure. Um then there's also other stuff like Open Code comes with LSP language server protocol support out of the box. Coming back to context engineering let's say you give your agent the task of modifying a bunch of files. What does that”transcript, stated
“It won't compile after the first edit, probably not after the second edit and so on and so forth. So if you then turn around and say, "Hey, dear LSP server, I just edited one line in this file. Is it broken?" Then the LSP server will say, "Yes, it's really”transcript, stated
“it then injects this error directly after the tool call as a kind of feedback to the model, "Oh, what you just did is wrong." And the model is like "What the [ __ ] dude? I'm I'm not done editing things. Why are you telling me this? Obviously it's”transcript, stated
“There is natural synchronization points where you want to have linting and type checking and all of that and that is when the agent think it's done.”transcript, stated

Approval dialogs as the primary safety mechanism.

Rejected because: Pi defaults to YOLO because approval prompts create fatigue and become ineffective if users stop reading them.

3 supporting quotes
“keep telling them that they're a coding agent and how they should do coding tasks, right? Um. YOLO by default. Why is that? Most coding agent harnesses at the moment have two modes, either agent can do whatever it wants or agent um gets to ask”transcript, stated
“the user needs to approve an action by the agent and then we are safe. And I think that's wrong because that leads to fatigue”transcript, stated
“people will either turn it off entirely, YOLO mode, or just sit there and type enter without reading anything.”transcript, stated

Built-in MCP, sub-agents, plan loading, background bash, and to-do lists.

Rejected because: Pi treats these as workflow choices that can be handled with CLI tools, extensions, tmux, markdown files, or custom implementations.

4 supporting quotes
“What's not in there? No MCP, no sub agents, no plan load, no background bash, no built-in to-do's. Here's what you can do instead. For MCP, use CLI tools plus skills or build an extension, which we'll see in a bit. Uh, no sub agents. Why? Because they're not”transcript, stated
“agents, no plan load, no background bash, no built-in to-do's. Here's what you can do instead. For MCP, use CLI tools plus skills or build an extension, which we'll see in a bit. Uh, no sub agents. Why? Because they're not as observable. Instead, use tmux and spawn the agent”transcript, stated
“extension, which we'll see in a bit. Uh, no sub agents. Why? Because they're not as observable. Instead, use tmux and spawn the agent again. You have full control over the agent's outputs and inputs and can uh, see everything that's happening in in the sub agent.”transcript, stated
“does exactly this basically as well. No plan load. Write a plan MD file. You have a persistent artifact instead of some janky UI that doesn't really fit into your terminal viewport uh, and you can reuse it across multiple sessions. Um, no background bash. Don't need it. We have tmux. It's”transcript, stated

Single-provider, single-model agent coupling.

Rejected because: Pi's provider abstraction lets developers switch between providers and register custom proxies or self-hosted models.

3 supporting quotes
“most people will be happy with the amount of information that cloud code will present you. Um There is zero model choice obviously because it's a Anthropic native tool so to speak. That's not a downside because cloud models models are I like them. Like they're really good. Um And there's”transcript, stated
“it's very easy to talk to all the providers and switch between them in the in the same context or same session.”transcript, stated
“50 lines of code and can uh, cover what all the other agent harnesses do if you want that. Custom providers, register proxies or off self-hosted models, don't care. You don't need me to do this for you. You can do this and actually your clankery can do it for you. Uh, or override any”transcript, stated

Patterns

tool-use-orchestration (agent_architecture)

Pi keeps the built-in tool interface to read, write, edit, and bash while letting developers add or override tools through extensions.

3 supporting quotes
“It only has four tools, read a file, write a file, edit a file, and bash.”transcript, stated
“So, you can extend tools, custom you can give the LLM tools that you define. I think no other coding agent harness currently offers that unless you fork open code.”transcript, stated
“override any built-in tool. Modify how read, write, edit, and bash work.”transcript, stated

model-routing (model_selection)

The AI package abstracts providers so users can switch models/providers inside a session and register proxies or self-hosted models.

3 supporting quotes
“an AI package which is basically just a simple abstraction over multiple providers”transcript, stated
“Um so it's very easy to talk to all the providers and switch between them in the in the same context or same session. Um the agent core which is just a a generalized agent loop with tool invocations, verification, and so on and so forth.”transcript, stated
“Custom providers, register proxies or off self-hosted models, don't care.”transcript, stated

context-compaction (context_management)

Pi leaves compaction to extension code so developers can experiment instead of accepting hardcoded pruning that damages prompt caching.

3 supporting quotes
“And in practice that means you can do custom compaction. I think that's one of the things that people should experiment more because all of compact of the compaction implementations currently are not good.”transcript, stated
“all of compact of the compaction implementations currently are not good.”transcript, stated
“What does this do to your prompt cache? Lost the prompt cache. Yes.”transcript, stated

observability-tracing (operations)

Pi exposes tree-structured sessions, cost tracking, exports, headless streams, and visible sub-agent alternatives instead of hiding agent operations.

4 supporting quotes
“And I personally find this not to be very helpful because I still think that you kind of need to know what the agent is doing. This guy might disagree to some degree.”transcript, stated
“Um, your session is a tree, not a linear list of chats. So, you can basically do sub agents by read all the files in the directory, summarize this, go back to my my root of the conversation, take the summary with me and do the actual work.”transcript, stated
“Nothing is injected behind your back. Agent skills, full cost tracking.”transcript, stated
“Uh, HTML export, JSON formats, headless JSON streaming, blah blah blah. Does it actually work? Well, terminal bench.”transcript, stated

cost-aware-routing (operations)

Pi treats prompt-cache preservation, model/provider choice, and full cost tracking as part of making coding-agent operation economically visible.

3 supporting quotes
“Now who here knows what prompt caching is? Right. What does this do to your prompt cache? Lost the prompt cache.”transcript, stated
“Lost the prompt cache. Yes. So Open Code and Anthropic had an interesting history and eventually Anthropic in my opinion um rightly so said, "Dudes, that's just not going to happen, right?”transcript, stated
“Agent skills, full cost tracking. A lot of harnesses don't do this.”transcript, stated

eval-driven-development (evaluation)

Pi uses TerminalBench to validate the minimalist design against other agent/model combinations.

3 supporting quotes
“>> [snorts] >> And then I looked into benchmarks for entirely different reasons and found Terminal Bench. Who knows what Terminal Bench is? Okay, basically it's a coding or an agent evaluation harness which has a bunch of computer use and programming related um um Sorry.”transcript, stated
“they have a leaderboard and on that leaderboard you see the combination of coding agent harness and model”transcript, stated
“Here's Pi right behind Terminus 2 uh, using Cloud Opus 4.5. That was back in October where Pi didn't even have compaction.”transcript, stated

safety-policy-enforcement (security)

Pi rejects approval dialogs as the default safety model and points users toward stronger isolation such as containerization or custom permission gates.

4 supporting quotes
“YOLO by default. Why is that? Most coding agent harnesses at the moment have two modes, either agent can do whatever it wants or agent um gets to ask you, "Do you really want to delete this file?”transcript, stated
“Containerization is also not a solution if you're worried about exfiltration of data and prompt injections”transcript, stated
“that's the best basis compared to guardrails like approval or dialogues.”transcript, stated
“permission gates, you can easily implement them in 50 lines of code”transcript, stated

human-in-the-loop-gate (governance)

The open-source contribution workflow requires a human-written issue and allowlist entry before PRs are accepted.

3 supporting quotes
“First, introduce yourself in a human voice via an issue. Write an issue that's not longer than a display long because everything else is clanker slop, probably.”transcript, stated
“All I'm asking is human verification. And Mitchell from Ghost it then took this and took the uh, built a project called vouch, which is more easily applicable to your own open source repository.”transcript, stated
“If somebody opens a PR without being in without their account name being in that markdown file, the PR gets auto closed.”transcript, stated

Tradeoffs

Build a minimal extensible core.

Chose A small core plus extension points over A feature-rich all-in-one coding-agent harness.

Rationale: The speaker believes the industry is still experimenting, so the framework should be malleable rather than prescriptive.

3 supporting quotes
“We are in the messing around and finding out stage and nobody has any idea what the perfect coding agent should look like or what the perfect coding harness should look like.”transcript, stated
“So the basic idea was and it's very simple and not rocket science, strip away everything and build a minimal extensible core. >> [snorts] >> There's some creature comforts.”transcript, stated
“adapt your coding agent to your needs instead of the other way around.”transcript, stated

Use only four built-in tools.

Chose read/write/edit/bash over A broad built-in tool and feature surface.

Rationale: TerminalBench and Terminus suggest very small interfaces can still perform strongly, so Pi keeps default tools minimal.

3 supporting quotes
“It only has four tools, read a file, write a file, edit a file, and bash.”transcript, stated
“Bash is all you need. What's not in there? No MCP, no sub agents, no plan load, no background bash, no built-in to-do's.”transcript, stated
“all it can do is send keystrokes to it and read back the the VT code sequences that are emitted.”transcript, stated

Make model choice part of the core provider abstraction.

Chose Provider/model agnosticism over Tight coupling to one model vendor.

Rationale: Developers can switch providers within a session and add proxies or self-hosted models without waiting on the framework author.

3 supporting quotes
“simple abstraction over multiple providers which all speak different transport protocols.”transcript, stated
“Um so it's very easy to talk to all the providers and switch between them in the in the same context or same session. Um the agent core which is just a a generalized agent loop with tool invocations, verification, and so on and so forth.”transcript, stated
“You don't need me to do this for you. You can do this and actually your clankery can do it for you. Uh, or override any built-in tool.”transcript, stated

Prefer tmux and external artifacts for workflow primitives.

Chose tmux, markdown plans, CLI tools, and extensions over Built-in sub-agents, plan loaders, background bash, and to-do lists.

Rationale: The speaker sees these as observable, reusable, and already-good primitives rather than core features the framework should own.

3 supporting quotes
“Instead, use tmux and spawn the agent again. You have full control over the agent's outputs and inputs and can uh, see everything that's happening in in the sub agent.”transcript, stated
“Write a plan MD file. You have a persistent artifact instead of some janky UI that doesn't really fit into your terminal viewport uh, and you can reuse it across multiple sessions.”transcript, stated
“no background bash. Don't need it. We have tmux. It's the same thing.”transcript, stated

Default to YOLO mode rather than approval prompts.

Chose Fast execution with isolation/custom gates over Mandatory per-action approval dialogs.

Rationale: The speaker believes approval dialogs produce fatigue and weak security behavior, while isolation and custom gates are better foundations.

3 supporting quotes
“YOLO by default. Why is that? Most coding agent harnesses at the moment have two modes, either agent can do whatever it wants or agent um gets to ask you, "Do you really want to delete this file?”transcript, stated
“And I think that's wrong because that leads to fatigue and people will either turn it off entirely, YOLO mode, or just sit there and type enter without reading anything.”transcript, stated
“that's the best basis compared to guardrails like approval or dialogues.”transcript, stated

Keep the terminal UI small and non-React-like.

Chose A roughly 600-line TUI over A complex terminal UI described as a game engine.

Rationale: The speaker argues terminal UI complexity caused flicker and performance issues in other tools, while a simpler TUI can render smoothly.

3 supporting quotes
“And streaming um uh a terminal user interface that's like 600 lines of code. >> [laughter] >> And works really well surprisingly uh because it wasn't written by a clanker.”transcript, stated
“it's a freaking terminal user interface, dude. It's not a game engine”transcript, stated
“it takes like 12 milliseconds to re-layout your entire user interface graph. Just don't do that”transcript, stated

Restrict open-source contributions through human verification.

Chose Allowlisted human contributors after a human-written issue over Open PR intake from any coding-agent user.

Rationale: The maintainer found coding-agent spam costly enough to add gatekeeping despite the contribution friction.

3 supporting quotes
“I invented OSS vacation. So, I just close issues and PRs for a couple of weeks”transcript, stated
“First, introduce yourself in a human voice via an issue. Write an issue that's not longer than a display long because everything else is clanker slop, probably.”transcript, stated
“All I'm asking is human verification. And Mitchell from Ghost it then took this and took the uh, built a project called vouch, which is more easily applicable to your own open source repository.”transcript, stated

Gotchas (what bit them)

Feature bloat can make an agent harness opaque and unstable for power users.

Root cause: Commercial tools can add many hidden features and behavior changes while trying to serve a large user base.

Resolution: Pi strips the core down and lets developers add the workflow-specific parts themselves.

3 supporting quotes
“cloud code is now a spaceship. It does so many things that you actually probably ever use like 5% of what it offers.”transcript, stated
“the tool vendor changes a tiny little thing under the hood that makes the LLM go crazy with your existing workflows.”transcript, stated
“So the basic idea was and it's very simple and not rocket science, strip away everything and build a minimal extensible core. >> [snorts] >> There's some creature comforts.”transcript, stated

Naive session compaction can destroy prompt-cache economics.

Root cause: Pruning historical tool results before a fixed token boundary rewrites the prompt structure and loses cache hits.

Resolution: Pi exposes custom compaction as an extension point rather than hardcoding a pruning policy.

3 supporting quotes
“It prunes all tool results um before the last 40,000 tokens. Now who here knows what prompt caching is? Right. What does this do to your prompt cache?”transcript, stated
“What does this do to your prompt cache? Lost the prompt cache. Yes.”transcript, stated
“you can do custom compaction. I think that's one of the things that people should experiment more”transcript, stated

Continuous LSP feedback can punish correct multi-step edits.

Root cause: A file often does not compile after the first edit in a sequence, but injecting that temporary error as model feedback can make the model abandon the plan.

Resolution: Run linting/type checking at natural synchronization points when the agent thinks it is done.

3 supporting quotes
“How probable is it that after the first edit out of 10 edits so to speak, the code will compile?”transcript, stated
“it then injects this error directly after the tool call as a kind of feedback to the model”transcript, stated
“There is natural synchronization points where you want to have linting and type checking and all of that and that is when the agent think it's done.”transcript, stated

Approval gates can become security theater.

Root cause: Users either disable prompts or approve them without reading once the workflow becomes repetitive.

Resolution: Use stronger isolation as the base security boundary and make permission gates optional extensions when a team wants them.

3 supporting quotes
“the user needs to approve an action by the agent and then we are safe. And I think that's wrong because that leads to fatigue”transcript, stated
“people will either turn it off entirely, YOLO mode, or just sit there and type enter without reading anything.”transcript, stated
“permission gates, you can easily implement them in 50 lines of code”transcript, stated

Open-source projects can be overwhelmed by low-quality AI-generated contributions.

Root cause: Coding-agent users can mass-submit issues and PRs that look generated and waste maintainer time.

Resolution: Pi uses OSS vacation periods and a human-verification allowlist before accepting PRs.

3 supporting quotes
“you will have hundreds of people coming from open claw to your repository and spam you with clanker filth and slop.”transcript, stated
“I invented OSS vacation. So, I just close issues and PRs for a couple of weeks”transcript, stated
“If somebody opens a PR without being in without their account name being in that markdown file, the PR gets auto closed.”transcript, stated

A built-in server architecture introduced a remote-code-execution concern in another harness.

Root cause: The speaker claims OpenCode exposed a server/client architecture without sufficient security maturity.

Resolution: Pi's design emphasizes explicit control and avoids assuming every architectural convenience should be in the core.

3 supporting quotes
“Then there was also this Open Code comes with a um a server by default. The so the current architecture is based on a server and clients connect to it and the terminal user interface is one of the clients.”transcript, stated
“That turned out to be a security vulnerability with remote code execution baked in by default.”transcript, stated
“It's just I don't want to use that tool if that is a thing. So so this was my observations with regards to existing coding harnesses and Android would have been something I could have used, but again no control.”transcript, stated

Evaluation

Pi is evaluated with TerminalBench, which compares agent harness and model combinations across computer-use and coding tasks. The speaker also uses architectural critiques as qualitative evaluation criteria: context-cache behavior, LSP feedback quality, UI performance, model choice, extensibility, cost tracking, and observability.

Metrics: TerminalBench leaderboard rank · Approximately 82 TerminalBench tasks · Claude Opus 4.5 model pairing · Whether compaction preserves prompt caching · Terminal UI responsiveness · Cost tracking availability · Extension implementation time · Observability of sub-agent workflows

5 supporting quotes
“>> [snorts] >> And then I looked into benchmarks for entirely different reasons and found Terminal Bench. Who knows what Terminal Bench is? Okay, basically it's a coding or an agent evaluation harness which has a bunch of computer use and programming related um um Sorry.”transcript, stated
“they have a leaderboard and on that leaderboard you see the combination of coding agent harness and model”transcript, stated
“Here's Pi right behind Terminus 2 uh, using Cloud Opus 4.5. That was back in October where Pi didn't even have compaction.”transcript, stated
“That was back in October where Pi didn't even have compaction. Right? Uh, demo time. Skipping that. Rage against the clankers because they are breaking open source.”transcript, stated
“Agent skills, full cost tracking. A lot of harnesses don't do this.”transcript, stated

Outcomes

The presentation gives several concrete dimensions: four packages, four built-in tools, an approximately 600-line TUI, about 82 TerminalBench tasks, a second-place-like TerminalBench placement behind Terminus 2 with Claude Opus 4.5, permission gates in about 50 lines, SSH tool overrides in five minutes, and 17 years of open-source maintainer experience behind the governance choices.

6 supporting quotes
“It comes with four packages uh an AI package which is basically just a simple abstraction over multiple providers which all speak different transport protocols.”transcript, stated
“It only has four tools, read a file, write a file, edit a file, and bash.”transcript, stated
“Here's Pi right behind Terminus 2 uh, using Cloud Opus 4.5. That was back in October where Pi didn't even have compaction.”transcript, stated
“And everything hot reloads. So, I develop my own extensions that are project or task specific um, in Pi inside the project and uh, as the uh, agent modifies the extension, I just reload and it immediately updates uh, all of the running code, which is very nice.”transcript, stated
“For me, that took 5 minutes to implement. And it works. Uh, and you have full tree access, so you can actually write entirely custom UI in the coding agent.”transcript, stated
“Mitchell from Ghost it then took this and took the uh, built a project called vouch”transcript, stated