01
Pi 1.0 — the minimal coding agent adds virtual models, and its example router switches once
Pi (MIT, TypeScript, 111,562 stars, 6,688 commits, over 100 contributors, v1.0.0 on Thursday) is the terminal coding agent from Earendil that has spent a year being known for what it leaves out. The 1.0 release (1,382 points on HN) adds codemode (the model writes JavaScript that calls tools in parallel, in a QuickJS sandbox), native MCP support, image models, and virtual models. A virtual model is a model you select like any other, written as an extension, that picks a physical model and thinking level for every request. The footer shows both the selected and the routed model, /session breaks cost down by physical model, and Pi compacts first if the routed model's context window is too small. Install with curl -fsSL https://pi.dev/install.sh | sh.
The router that ships as an example, jev-router.ts, is more careful than the announcement makes it sound. The announcement's demo has Jev "spot the switch to implementation". In the shipped example, Jev makes one call: it rates the first message as standard or complex, which picks GPT-5.6 Sol or Terra for planning. The handoff to the cheap model, Luna, is a rule, not a classifier: after the first successful edit or write, the session moves to Luna and stays there. The comment says why: "A session therefore switches models once and accepts a single prompt-cache miss." The docs recommend the same thing for every router, keeping tool follow-ups and retries on the model that handled the turn. In the HN thread, a commenter asked why MCP waited nearly two years for support while Jev got it within a month. Armin Ronacher of Earendil answered that "we look at what the models are doing": models are trained on their own harnesses, Codex relies on codemode, and codemode is how Pi exposes non-LLM models such as Jev to the agent.
Reach for it if you already run more than one provider and want to write your own routing rule in a few dozen lines instead of adopting someone's router. Delete the shell alias that starts a second agent on the cheaper model. Tradeoffs: virtual models were added two days before 1.0 and are labeled experimental; the example router needs a TypeSafe API key and an OpenAI Codex login; the TUI is now fullscreen by default, which several commenters disliked (tuiMode: "regular" restores scrollback); and the recommended install pipes a script into sh.