Pi

Agentby Tori @gettoriApache-2.0Bundled
Verified against
pi 0.82.1 with pi-acp 0.0.33Measured Oct 9, 2026
Platforms
macOS, Linux, Windows
Install
You install it yourself
Needs Tori
26.1009.0 or newer
Schema
Version 2
Id
pi
Source file
agents/pi.toml ↗gettori/packs on GitHub

Add it in Tori

  1. Open Settings with the gear in the title bar.
  2. Go to Agents.
  3. Pi is already there: it ships inside Tori. When the catalog has a newer version, Add an agent lists it with Update.

Adding writes one file and runs nothing. Tori starts Pi from your PATH.

Use it without the catalog

Download the file and drop it in the folder below. Tori loads it the next time it starts.

Download file pi.toml
~/.config/tori/packs/agents/

Chat and accounts

ChatChat over ACP

Tori opens a chat pane next to the terminal and talks to Pi through the Agent Client Protocol.

AccountsOne account

Tori uses whichever account the agent is signed in to.

Usage readoutsNot available

The agent does not report usage, so Tori shows none.

The file

pi.tomlRead only
1schema_version = 22id = "pi"3label = "Pi"4description = "The pi coding agent, with chat over ACP"5license = "Apache-2.0"6contributor = { name = "Tori", github = "gettori" }7icon = "pi"89# Measured with `node dev/acp-probe.mjs --agent pi-acp`. Two versions, as in10# codex.toml: the PTY tab runs `pi`, the chat surface runs the pinned bridge,11# and `pi`'s version comes first because that is what health.rs compares.12verified_against = "pi 0.82.1 with pi-acp 0.0.33"13verified_on = "2026-10-09"1415[launch]16program = "pi"17# The TUI, for a PTY tab. Nothing to do with the chat surface below, which18# launches the ACP bridge instead.19base_args = []20# No yolo_args: whether pi has an approve-everything flag is unmeasured, and a21# guessed flag is worse than no button.22yolo_args = []23# Empty: the UI reads this as "this agent's sessions can't be resumed" rather24# than mis-resuming. See opencode.toml for why an ACP row's id is Tori's own.25resume_args = []2627# No [discovery], [parser] or [running]: a protocol-backed adapter reaches its28# sessions through ACP, never through files. See opencode.toml.2930[capabilities]31pty_quiet_ms = 200032# Not claimed, and here not measurable at all until the CLI is installed.33needs_you = false34hooks = false3536[chat]37transport = "acp"3839# Its model names arrive as a "Provider/Name" path, sometimes with a vendor40# prefix on the name itself ("openrouter/Amazon: Nova 2 Lite" over41# "openrouter/amazon/nova-2-lite-v1"; observed, not pinned: see the missing42# verified_against above).43# Lets the picker split them for display; the wire id is never rewritten.44split_model_names = true45# Like Codex, the chat binary is not the launch binary: `pi` has no ACP mode46# of its own, so chat goes through `pi-acp`, a bridge that spawns the47# **installed** `pi --mode rpc` from PATH and reuses pi's own sessions48# (`~/.pi/agent/sessions/`). Unlike claude-agent-acp it vendors no second49# agent: its only dependencies are the ACP SDK and zod, so the pi that answers50# is the one the user installed (its README requires pi v0.80.4+). The one51# caveat worth naming: the bridge is third-party (svkozak/pi-acp), not the pi52# author's, which is a reason to pin and re-measure rather than a reason to53# avoid it.54program = "npx"55# Pinned to the version the ACP Registry pins, matching codex.toml's practice:56# unpinned, the bridge would silently move underneath any future measurement.57base_args = ["-y", "pi-acp@0.0.33"]5859# All empty for the same reason as opencode's: ACP carries sessions, models and60# modes in the protocol rather than on the command line.61session_id_args = []62resume_args = []63fork_args = []64model_args = []65effort_args = []66mode_args = []67add_dir_args = []6869# No [[chat.models]]: whatever this agent advertises on its handshake is what70# the picker will show.7172[chat.acp]73# Left at the safe default, like every unmeasured ACP adapter.74#75# pi-acp 0.0.33 accepts a populated `mcpServers` and never starts the servers76# (dev/mcp-probe.mjs --acp), so `send_mcp_servers` stays off.77serve_client_fs = false