Summary

I’ve always been a massive nerd when it comes to coding. In fact, nine-year-old me somehow decided that sitting down and learning Python was a better use of my free time than doing literally anything a normal nine-year-old would do. While other kids were busy playing games, I was busy figuring out how to write my own (admittedly terrible) programs. My fascination with coding never really went away. If anything, the rise of AI coding assistants has only made it worse. Sure, these tools do mean I now spend less time actually writing code myself, and memorizing syntax is something I barely have to worry about anymore. However, they’ve also made coding a lot more exciting for me. I can focus on experimenting with all the ideas jumping through my head, building things I probably wouldn’t have attempted otherwise, and seeing just how far I can push these tools. Instead of settling for one specific AI coding tool, though, I’m a huge fan of experimenting with all the different options out there. Through all this experimenting, I stumbled upon a tool that beats Claude Code, Codex, and Antigravity at their own game. Pi is the coding agent you probably haven’t heard of The underdog worth rooting for There’s a massive issue with the big names that dominate the coding agent market. As with every other category of AI tools, the competition to offer the most features has gotten a little out of hand. Every other update seems to bring a handful of new features, add additional layers of complexity, or introduce something else that most users probably won’t even need. Though having more features certainly isn’t a bad thing, and many would argue that getting more value out of an existing subscription is always appreciated, I’d argue that it does mean these tools are becoming increasingly bloated. Unfortunately, this isn’t just limited to coding agents from the big AI companies, like Claude Code, Codex, and Antigravity. Even free, open-source alternatives like OpenCode seem to be heading in the same direction. This brings me to Pi, which is an extremely underrated coding agent that competes with the likes of the tools I mentioned above, but takes a completely different approach to how a coding agent works. Developed by Mario Zechner, Pi is a free, open-source coding agent that puts simplicity and minimalism first. It’s described as an “extensible agent harness that you can make your own.” You can take it for a spin by installing it through npm, provided you have Node.js installed on your computer. All you need to do is open your terminal and run the following command: npm install -g —ignore-scripts @earendil-works/pi-coding-agent Once it’s installed, you can launch Pi by opening your terminal, navigating to the directory of your choice that you want Pi to work with, and running the pi command. Pi only enables four tools by default The rest is up to you Similar to all the others, it works directly from your terminal and has all the agentic capabilities you’d expect from a modern coding assistant. It can read files, write and modify code, execute commands, and work through complex coding tasks on your behalf. What sets it apart, though, is that it manages to do all this with just four tools enabled by default: read, write, edit, and bash. As their names suggest, these tools allow Pi to read files, create new ones, modify existing code, and run terminal commands. That’s essentially all it needs to function as a coding agent. Now, this doesn’t mean Pi only supports four tools. It actually comes with several other built-in tools, including grep, find, and ls, which you can enable whenever you need them. The difference is that Pi doesn’t force all these tools on you from the get-go. This means that your context window isn’t unnecessarily cluttered with tool definitions you might never even use, leaving more room for the actual task at hand. Pi gives you the tools to build your own tools It doesn’t decide what you need One of Pi’s biggest selling points is its extension system, which lets you add practically any functionality you feel is missing. Extensions are written in TypeScript and can introduce custom tools, commands, keyboard shortcuts, and even changes to Pi’s terminal interface. You can also use them to modify how the agent behaves, interact with different model providers, or automate specific parts of your workflow. Essentially, with Pi, the onus is on you to build the coding agent you want. Rather than the developers deciding which features you need and shipping them with every update, Pi gives you the foundation and lets you take things from there. The best part is that you don’t even need to know TypeScript to get started with extensions. Since Pi is a coding agent itself, you can simply describe the functionality you want and ask it to build an extension for you. Alternatively, you can install extensions and packages that other developers have already created. For example, Claude Code ships with a built-in Plan Mode that lets you explore a codebase and map out a task before making any changes. Pi doesn’t enable an equivalent feature by default, but that doesn’t mean you’re stuck without one. You can simply ask Pi to build a Plan Mode extension for you, complete with a custom command, restrictions on modifying files, and even a progress tracker. You can bring your own AI model No vendor lock-in here With Claude Code, you’re limited to using Anthropic’s own models. With Codex, you’re limited to using OpenAI’s own models. With Antigravity, you’re primarily limited to Google’s own models (though you get older models from other providers). Sure, there are ways to get around these restrictions, but these tools are generally designed with their respective companies’ models in mind. Pi, on the other hand, doesn’t tie you to any particular AI provider. You can choose from models offered by Anthropic, OpenAI, Google, DeepSeek, Mistral, Groq, xAI, Cerebras, and several other providers. It also supports services like OpenRouter, which gives you access to models from multiple providers through a single API. If you’d rather avoid cloud-based models altogether, you can even connect Pi to locally hosted models using tools like Ollama, LM Studio, llama.cpp, or vLLM, allowing you to run models on your own hardware without relying on a third-party API. Getting started is relatively straightforward, too. You can authenticate with a supported provider using the /login command or configure an API key. Once you’ve connected your providers, you can use the /model command to switch between models without having to leave Pi or start over with a completely different coding agent. This means you can choose which model makes the most sense for a particular task, whether that’s a powerful reasoning model for a complex project or a cheaper, faster alternative for simpler coding tasks. You’re not locked into one company’s ecosystem, and you get to decide how much you’re willing to spend! Pi’s minimalist approach comes with a catch You’ll need to think about security, too Of course, giving users this much freedom comes with a few drawbacks. Unlike some of its competitors, Pi doesn’t come with a built-in permission system that asks for your approval before executing potentially dangerous commands. By default, it operates with the permissions of the user account running it, meaning a poorly interpreted prompt could potentially modify or delete files you never intended it to touch. Fortunately, Pi’s extension system comes to the rescue here, too. For example, there’s a community-made extension called pi-permission-system that lets you configure rules for what Pi is and isn’t allowed to do. You can set commands to execute automatically, require your approval, or block them entirely. You can also restrict access to sensitive files and directories, giving you more control over what your coding agent can touch. Still, it’s worth remembering that an extension-based permission system isn’t the same thing as running Pi in a properly isolated environment. If you’re working with sensitive files or simply don’t want to risk an AI agent messing with your system, running Pi inside a container or sandbox is the safer approach! All that to say, I’m not saying that Claude Code, Codex, Antigravity, or even OpenCode are bad tools. Far from it. I’ve spent countless hours experimenting with all of them, and there’s a reason I keep going back to them. Having a feature-packed coding agent isn’t necessarily a bad thing, especially when those features genuinely make your life easier. But I do think there’s something refreshing about Pi’s approach, and the fact that you can experiment with different models and build the coding agent you want without having to wait for the developers to introduce new features. You get to decide exactly what your coding agent looks like, how it behaves, and what it’s capable of!

By Mahnoor Faisal

Original Article