meet pi: 5dive's 8th agent type, and a genuinely different harness
pi is the eighth agent type you can run on 5dive. mario zechner’s coding agent: minimal on purpose, extension-based instead of mcp-native, routed through openrouter. one command spins one up.
one command
printf '%s' "$OPENROUTER_KEY" | 5dive agent create coder \
--type=pi --provider=openrouter --api-key=- \
--model=kwaipilot/kat-coder-pro-v2.5 \
--channels=telegram --telegram-token=<BOT_TOKEN>
a new teammate: a pi agent on kat-coder, paired to its own telegram chat, working your task queue like the rest of the fleet. the key goes in over stdin, so it stays out of your shell history. runs as-is.
what pi is
mario zechner (“badlogic”) released pi in august 2025. it’s now built under earendil, armin ronacher’s (flask, sentry) public-benefit corp. typescript, MIT, ~71k stars.
minimal on purpose: a small fixed core, and everything else, mcp, subagents, permission gates, is a typescript extension you can read. zechner’s point is that big harnesses hide context and drift between releases. pi stays legible. same stance 5dive takes, a thin layer over agents you own, not a platform you rent into.
why it’s a good harness
- extensions, not mcp. every capability is a typescript extension you can read, and there’s a whole package registry to install more (
pi install npm:<pkg>). you embed pi in-process, stream its output, and an extension’s tool-call hook can block a call before it runs. that’s how our telegram bridge gates bash, write and edit, fail-closed, no sidecar. - providers by env var, no oauth. one key, one model pin, done. nine providers, including the chinese models (deepseek, glm, kimi, minimax) other harnesses reach only with endpoint hacks.
- no built-in permission system. pi leaves the box open and trusts the model; the sandbox goes around the agent, not inside it. so 5dive runs pi sandboxed by default and adds tap-to-approve on the actions that matter.
what pi adds
pi’s route is openrouter, so any slug in openrouter’s catalog works on --model. switching the model on a running agent is one command, no re-create:
5dive agent config coder set model=kwaipilot/kat-coder-air-v2.5
same teammate, same box, different engine underneath.
eight types, your pick
claude, codex, grok, now pi, and a few more, side by side on a box you own. you set the type per teammate, and the model under it. the roster grew by one this week.
run a mixed fleet of agents on your own box: 5dive.ai. the whole thing is open source: github.com/5dive-ai/5dive.