Skip to content
Back to blog
2 min read

Pi: The Minimal Terminal Harness I Didn't Know I Wanted

AICLIWorkflow

The anti-feature list

Every coding agent ships the same roadmap — sub-agents, plan mode, sandboxes, a growing prompt that takes over your context window. Pi does the opposite. It gives the model four tools (read, write, edit, bash), a system prompt under ~1,000 tokens, and stops.

Missing a feature? That’s the point. You ask Pi to build it as an extension, or install a package that does it your way. The core stays minimal because it can.

Why that wins

A small tool surface means every decision the agent makes is visible. I can read the whole session, see which bash commands it ran, and trust the blast radius. There’s no permission system hiding what it’s about to do — which means I actually watch it work.

# provider-flexible: swap mid-session instead of changing tools
pi            # interactive TUI
pi -p "run the test suite"   # single-shot for scripts

Pi talks to 15+ providers and switches models mid-session, so a cheap model handles the boring turns and I escalate only when a task needs it. Running Grok or Codex through it costs me a fraction of a locked-in subscription.

The guardrails

const agent = new CodingAgent({ tools: ["read", "grep"], provider: "openrouter" });
await agent.prompt("summarize the diff and flag risks");

Minimal doesn’t mean weak. It means you bring your own rails — and for once, you can actually see what you’re running.

Thanks for reading

hello@prajeen.com