Why I Switched to Pi: A Terminal-First Coding Agent

โšก Tools ๐Ÿ”ง TypeScript / AI ๐Ÿ‘ค Helmut Januschka

From Claude Code to Pi - why a shitty coding agent became my daily driver

The Discovery

A few weeks ago, I stumbled upon Pi by Mario Zechner (@badlogic) - yes, the same Mario behind libGDX, the cross-platform game framework. He's been building a terminal-based coding agent that's refreshingly different from the mainstream options.

The project does not take its branding too seriously - its website is shittycodingagent.ai - while the implementation emphasizes a small core and extension points.

Why Pi?

Multi-Model Freedom

Pi can switch models in the middle of a session. A conversation can move between providers without exporting its history or starting over.

# Press Ctrl+L to open model selector anytime
# Or use Ctrl+P to cycle through models

Supported providers include:

The Session Tree

Instead of linear chat history, Pi stores sessions as trees. Every conversation branch is preserved. Made a mistake 10 messages ago? Use /tree to navigate back, branch off, and try a different approach - without losing your original path.

This is useful when comparing approaches without discarding the earlier branch.

Skills System

Pi implements the Agent Skills standard - self-contained capability packages the agent loads on-demand. Think of them as specialized "modes" - a skill might contain setup instructions, helper scripts, and workflow documentation for a specific task like browser automation, API integrations, or code review workflows.

The agent automatically detects when a skill is relevant based on its description. No manual activation needed.

Extensions

Behavior can be customized with TypeScript extensions:

// hooks/my-hook.ts
export default {
  name: "my-hook",
  before_agent_start: async (ctx) => {
    // Modify prompts, inject context, whatever you need
    return { systemPromptAppend: "Always be concise." };
  }
};

Example extensions are available in shitty-extensions:

Getting Started

npm install -g @mariozechner/pi-coding-agent
pi

Contributing

The project is written in TypeScript and accepts pull requests. The configurable-keybindings change went through the normal repository review process and was incorporated into the main project.

The Philosophy

From Pi's README:

Pi is a terminal-native coding agent designed for developers who prefer keyboard-driven workflows. It emphasizes transparency, control, and extensibility over magic.

That design suits workflows where model choice, visible state, and local customization matter.

Try It

npm install -g @mariozechner/pi-coding-agent
export ANTHROPIC_API_KEY=sk-ant-...
pi

Or grab a standalone binary if you don't want Node.js.

The Discord community is active and helpful. And yes, the website is still shittycodingagent.ai - embrace it.


Links: