Transcript
00:00:00There are now two serious open source AI coding agents fighting for the terminal
00:00:04and picking the wrong one could mean rebuilding your entire workflow later.
00:00:10One of them ships with everything you could want out of the box, the other
00:00:14ships with almost nothing and argues that's exactly the point today, we're
00:00:19putting open code and PI head to head.
00:00:21So by the end of this video, you'll know exactly which one belongs in your terminal.
00:00:27Let's start with what these tools actually are.
00:00:30Because they solve the same core problem in fundamentally different ways, both
00:00:34open code and PI are terminal based AI coding agents, you run them in your
00:00:40terminal, they connect to large language models like Claude or GPT, and they can
00:00:45read your code, edit files, run shell commands, and have extended conversations
00:00:50about your code base, think of them as open source alternatives to Claude code.
00:00:55Both are written in TypeScript, both are MIT licensed in both support over 20
00:01:01LLN providers, but that's roughly where the similarities end open code was built
00:01:06by the creators of terminal dot shop and a community of Neo VIM enthusiasts.
00:01:11It takes what I'd call a batteries included approach out of the box.
00:01:15You get a multi agent system with specialized agents for different tasks, a
00:01:20built in permission system with approval, dialogues, language, server protocol,
00:01:24integration for code intelligence, full model context protocol, support for
00:01:29connecting to external tools, a SQLite database for session persistence, and
00:01:34even Atari based desktop app alongside the terminal interface open codes.
00:01:40Philosophy is that a coding agent should work well immediately with sensible
00:01:45defaults and deep integrations PI created by Mario Zechner takes the opposite
00:01:51approach. Its philosophy is stated clearly in the read mace PI is
00:01:56aggressively extensible, so it doesn't have to dictate your workflow PI
00:02:00deliberately ships without sub agents, without MCP support, without a permission
00:02:05system, without plan mode, and without built in to do tracking. Instead, it
00:02:11provides a powerful extension API and says, build exactly what you need or
00:02:17install a community package that does it your way. The core stays minimal. Everything
00:02:22else is opt in. So these two projects represent a genuine philosophical split
00:02:27in how developer tools should be designed. Let's dig into the technical
00:02:32details of each one, and then we'll compare them directly. Starting with open
00:02:36codes architecture. Open code is a monorepo with around 21 packages. The
00:02:42core engine lives at a single package, but there are separate packages for the
00:02:46web console, the desktop app, the TypeScript SDK, the plugin system, shared
00:02:52UI components, and documentation. Under the hood, it runs on bun, which is
00:02:57significantly faster than node for startup and execution. For its LLM
00:03:02abstraction layer, open code uses the versatile AI SDK version five. This is a
00:03:08well maintained, widely adopted library that provides a unified interface across
00:03:13dozens of providers. The practical benefit is that open code inherits
00:03:18provider support almost for free. As the vercel SDK adds new integrations. One of
00:03:24open code standout features is its multi agent system. It ships with several
00:03:30specialized agents. The build agent is the default, a full access development
00:03:35agent that can read, write and execute anything. The plan agent is read only
00:03:40designed for exploring and analyzing code without making changes. It can only
00:03:45write to a specific plans directory. The Explorer agent is a fast lightweight
00:03:50specialist for code based navigation, restricted to search and read operations.
00:03:55And there's a general agent for complex multi step tasks that acts as a sub
00:04:00agent. Users switch between these agents with the tab key, and each agent has its
00:04:05own permission rule set. You can also define custom agents in your
00:04:09configuration file, specifying which model they use, what permissions they
00:04:14have, and what their system prompt says. For data persistence, open code uses
00:04:19SQL lite with the drizzle ORM sessions, messages, permissions, and MCP
00:04:25credentials, all live in a single database file. This is a meaningful
00:04:30architectural choice. SQL lite gives you transactional integrity, efficient
00:04:35querying across sessions, and a single file that's easy to back up. Open code
00:04:41runs it in WAL mode for better concurrent read performance. Open codes permission
00:04:46system is layered and granular. Every tool invocation goes through permission
00:04:52checks. You can set rules per tool and per file pattern. For example, you might
00:04:57allow all file reads but require approval for editing dot NVM files and completely
00:05:03deny shell commands that touch production directories. Permissions cascade through
00:05:08multiple configuration levels from global user config down to project specific
00:05:13overrides. When the agent needs approval, it shows an interactive dialog right in
00:05:18the terminal, and you can choose to allow once or always allow that action. The MCP
00:05:24integration is full featured. Open code can connect to both local and remote MCP
00:05:30servers. Supports STDO and HTTP transports, handles OAuth authentication
00:05:37for remote servers, and automatically registers tools from connected MCP
00:05:42servers. If you're already using MCP servers with other tools, open code will
00:05:47work with them immediately. Another notable feature is built-in LSP support.
00:05:53Open code can spin up language server protocol servers for TypeScript, Python,
00:05:58Go, Rust, and other languages. This gives the AI model access to real code
00:06:04intelligence like hover information, go-to definition, and symbol references rather
00:06:10than relying purely on text pattern matching. It's a subtle but meaningful
00:06:15advantage for code understanding accuracy. Open code also has a skill system that's
00:06:20compatible with Claude Code's skill format. Skills are marked down files with
00:06:25front matter that defines specialized behaviors, and there's a plug-in system
00:06:30based on NPM packages that can hook into nearly every part of the lifecycle from
00:06:35configuration, loading, to message transformation, to tool execution. Now
00:06:40let's look at Pi's architecture. Pi is also a monorep, but with a different
00:06:45structure. The key packages are the coding agent itself, Pi I for the LLM
00:06:51abstraction layer, Pi agent core for the stateful agent runtime, and Pi 2e for the
00:06:57terminal rendering agent. There's also PiMom, a Slackbot companion, and PiPods
00:07:02for GPU deployment. The most significant technical decision in Pi is that it built
00:07:08its own LLM abstraction layer from scratch instead of using the Versailles
00:07:12ISDK. Pi I is a unified multi provider LLM API that supports 30 plus
00:07:20providers, including some that the Versailles ISDK doesn't cover, like
00:07:24Minimax and Kimi. Building their own layer gives the Pi team full control over
00:07:30streaming behavior, tool call parsing, and provider specific optimizations. The
00:07:35trade-off is maintenance burden, but it also means Pi can implement features
00:07:40like partial JSON parsing during tool argument streaming exactly the way they
00:07:44want. Pi session management uses a JSONL format, which is a flat file where each
00:07:50line is a JSON object. Every entry has an ID and a parent ID, which enables a tree
00:07:56structure within a single file. This is clever. It means you can branch
00:08:00conversations, navigate the full history tree, and jump between branches all within
00:08:06one file that's easy to inspect with standard Unix tools. The tree command lets
00:08:12you visualize your entire conversation history and navigate to any point. The
00:08:17fork command creates a new branch from any message. It's genuinely one of the
00:08:23best conversation management interfaces I've seen in a coding agent. Pi's
00:08:28extension system is where the philosophy really comes alive. Extensions are
00:08:33typescript files loaded directly by JITI, so there's no compilation step. An
00:08:38extension can register custom tools, commands, and keyboard shortcuts. It can
00:08:44subscribe to lifecycle events like session, start, agent start, tool calls, and
00:08:49model selection. It can interact with the user through confirm dialogues, select
00:08:55menus, and text input prompts. It can even render custom TUI components. The
00:09:01extension API gives you access to the session manager, model registry, auth
00:09:06storage, and event bus. In other words, extensions can do essentially anything
00:09:11the core can do. This is where Pi's opinionated omissions start to make
00:09:16sense. No built-in permission system? Write an extension that shows a confirm
00:09:20dialog before dangerous commands. No subagents? Spawn Pi instances via TMUX or
00:09:27write an extension that coordinates multiple agent loops. No MCP? Build a
00:09:33skill with a CLI tool and a README or write an extension that adds MCP support.
00:09:40No plan mode? Write plans to markdown files or build an extension that manages
00:09:45plans however you prefer. Pi's terminal rendering is also custom built. The pi2e
00:09:51package implements differential rendering with three strategies to minimize screen
00:09:56updates and uses the CSI 2026 protocol for atomic updates that eliminate flickr.
00:10:02It has its own component system with containers, editors, text rendering
00:10:07markdown display, image support, and select lists. The coding agent's TUI is built
00:10:13entirely on this framework. For tool handling, Pi ships with seven built-in
00:10:18tools—READ, bash, edit, write, grep, find, and ls. That's a deliberately minimal set.
00:10:25The bash tool supports optional docker sandboxing and real-time streaming
00:10:30output. The edit tool uses unified diff format. All tools validate their
00:10:36arguments with AJV before execution and support parallel execution by default,
00:10:42meaning multiple tool calls from the LLLM run concurrently rather than one at a
00:10:48time. Now let's compare these two directly on the dimensions that matter most.
00:10:53Provider support. Both support over 20 providers and work with any OpenAI
00:10:59compatible API. Open code uses the Vercel AISDK, which means it inherits new
00:11:06provider support as that ecosystem grows. Pi built its own Pi-I library, which
00:11:12gives it more control but requires manual integration of new providers. In practice,
00:11:18both cover all the major providers you're likely to use. The agent model
00:11:22open-code ships with multiple specialized agents and lets you switch between them
00:11:27with a single key press. Pi ships with one agent and says if you want subagents,
00:11:33build them with extensions or spawn separate instances. If you want
00:11:37specialized modes out of the box, open code wins here. If you'd rather build
00:11:42your own agent topology, Pi gives you the tools to do it. Open code uses SQLite.
00:11:47Pi uses JSONL files. SQLite gives you transactional integrity and efficient
00:11:53querying. JSONL gives you human readable files you can inspect with CAT or GREP,
00:11:58and Pi's tree structure within a single file is elegant. Both support session
00:12:04branching and forking, Pi's tree navigation interface is particularly
00:12:08well-designed for exploring conversation history. Open code has a comprehensive
00:12:13built-in system with approval dialogues per file rules and persistent permission
00:12:19memory. Pi has no permission system in its core and expects extensions to handle
00:12:25this. If you want guardrails immediately, open code is the safer choice. If you run
00:12:30in containers or want full control over your security model, Pi's approach gives
00:12:35you more flexibility. MCP support. Open code has full MCP support with OAuth,
00:12:41multiple transports, and automatic tool registration. Pi explicitly rejects MCP
00:12:48in its core in favor of skills, which are CLI tools documented with readme's.
00:12:54Mario Zeckner wrote a blog post arguing that MCP adds complexity where a simple
00:13:00CLI tool with a readie accomplishes the same goal. If your workflow already
00:13:04depends on MCP servers, open code is the clear choice. If you prefer the Unix
00:13:10philosophy of small composable tools, Pi's approach might resonate more. Code
00:13:16intelligence. Open code has built-in LSP integration that gives the AI model
00:13:22access to type information, definitions, and references. Pi does not include LSP
00:13:28in its core. This gives open code a meaningful edge for working in strongly
00:13:32typed languages where type context improves the AI's understanding. The
00:13:37terminal interface. Both have sophisticated custom TUI implementations,
00:13:42but built differently. Open code uses solid.js with the OpenID framework. Pi
00:13:48uses its own Pi2E framework with differential rendering. Both look great
00:13:53and feel responsive. Open code additionally offers Atari based desktop
00:13:58app and a web console. Pi is terminal only, though it offers a web components
00:14:03library that developers can embed in their own applications. Both use JSON
00:14:07based configuration with project and global levels. Open code uses JSON C,
00:14:14which is JSON with comments. A nice quality of life touch. Pi uses standard
00:14:19JSON. Both support extensive customization of models, tools, and behavior. Open code's
00:14:26configuration is more complex because there's more to configure. Pi's is
00:14:31simpler because there's less built-in surface area. So which one should you
00:14:35choose? Here are the questions to ask yourself. You want a tool that works fully
00:14:39featured out of the box? Or do you prefer to assemble your own workflow? If you
00:14:45want to install a coding agent and have everything working in five minutes with
00:14:49permissions, multiple agents, MCP, LSP, and a polished experience, open code is
00:14:56designed for that. If you want a minimal core that you customize exactly to your
00:15:01needs and you're comfortable writing typescript extensions, Pi is built for
00:15:06you. How important is MCP to your workflow? If you already use MCP servers
00:15:11or plan to, open code supports them natively. Pi deliberately does not
00:15:16favoring simpler CLI based integrations. Do you work primarily in strongly typed
00:15:22languages? Open code's built-in LSP support gives the AI model richer code
00:15:28understanding which matters most for typescript, Go, Rust, and similar languages.
00:15:34If you work mostly in Python or dynamically typed languages, this
00:15:39advantage is smaller. Do you want a desktop app or web interface? Open code
00:15:44offers both alongside the terminal. Pi is terminal only and proud of it. How do you
00:15:51feel about trust and sandboxing? If you want the agent to ask before doing
00:15:55anything dangerous, open code's permission system handles this out of the box. If
00:16:00you'd rather run the entire agent in a Docker container and let it do whatever
00:16:04it wants inside that sandbox, Pi's no-permissions approach pairs well with
00:16:10container-based workflows. Are you a power user who wants to customize everything?
00:16:15Pi's extension system is remarkably powerful. You can modify virtually every
00:16:20aspect of the agent's behavior from tool execution to session management to the
00:16:25TUI itself. Open code has a plug-in system too, but it's more focused on
00:16:30specific hooks rather than full behavioral override. Here's the honest
00:16:34bottom line. Open code is the more mature, more feature-complete product today. It
00:16:40gives you more out of the box. It integrates with more external systems and
00:16:44it has a lower barrier to entry. For most developers who want an open-source AI
00:16:49coding agent, open code is the safer bet. Pi is the more interesting design. Its
00:16:55aggressive minimalism and extension-first philosophy make it uniquely adaptable. If
00:17:01you're the kind of developer who customizes your Neovim config for weeks
00:17:05before writing any code, if you want an agent that works exactly the way you
00:17:09think it should, Pi rewards the investment and its session tree navigation is
00:17:14genuinely best in class. Both projects are MIT licensed, both are actively maintained,
00:17:20and both support the same broad set of LLM providers. You can try both in an
00:17:27afternoon. The code is on GitHub and neither requires a subscription to get
00:17:31started. Install them, run them on the same code base, and see which one clicks with
00:17:37how you work. That's the only comparison that actually matters.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video