All agent CLIs
pi in NeuroSquad

pi stays minimal.The canvas does the rest

pi has no MCP, no hooks and no permission popups — on purpose. NeuroSquad adds one extension, loaded the way pi is meant to be extended, and each pi card knows when it is working, waiting on you or finished, uses terminals, notes and other agents by arrow, and keeps its sessions and costs in view.

Official sitepi.dev
  • The real pi CLI, your own login
  • Nothing written to ~/.pi
  • Free, for Windows 10 and 11
Extension events

It knows when pi is done — through pi’s own events

pi has no hook system; it has an extension API. The NeuroSquad extension listens to three of pi’s events and reports each turn to its card.

agent_startpi event
Working

pi starts a turn. The card’s icon spins, the Squad status card counts it as working, and the last toast is taken down.

ui_prompt_startpi event
Needs you

An extension opened a dialog — your own permission gate, or NeuroSquad asking before a third-party tool. The card pulses and the toast shows the dialog’s title.

agent_settledpi event
Finished

Nothing left to do: no retry, no compaction, no queued message. The next queued prompt goes out, and the context meter gets pi’s own numbers.

pi never asks — unless you want it to

Its own tools run without popups. A dialog from any extension, such as pi’s example permission gate, makes the card “needs you”.

“Finished” means settled

agent_settled fires only when pi has no retry, compaction or follow-up left, so a turn is never called done in the middle of a retry.

Click, and you’re there

A toast click switches to the workspace, flies the camera to that card and flashes it.

Watch it work

Three things you’ll do with pi

Replicas of the app, played step by step. When a dialog asks, the answer is yours.

pi fixes a failing test with its own tools, a permission-gate extension stops it before a delete, and the journal writes itself when the turn settles.

Everything it gets

Everything pi can do in NeuroSquad

All of it comes from one extension file and pi’s own flags. Where NeuroSquad builds something pi does not have, the card says so.

  • 01

    Knows its state

    pi’s own extension events report every turn, so nothing is guessed from a quiet terminal.

  • One extension, loaded by pi

    Each card starts with -e neurosquad-extension.js — the same file for every card, rewritten on each launch. Everything card-specific is in the environment; nothing secret is in the file or the arguments.

    Docs: One extension, loaded by pi
  • Finished and waiting are different

    agent_start marks the card working, ui_prompt_start — waiting on you, agent_settled — finished. Answering the dialog (ui_prompt_end) marks it working again.

    Docs: Finished and waiting are different
  • A notification with the dialog’s words

    The toast leads with the title of the dialog pi is showing — say, ⚠️ Dangerous command: rm -rf dist. One per agent; a waiting one stays until you answer; a click flies to the card.

    Docs: A notification with the dialog’s words
  • Every card is its own session

    --session-id with the card’s id on the first launch, --session after. /new, /resume and /fork are followed, so a restart continues the session you were really in.

    Docs: Every card is its own session
  • The Squad status card

    Every AI agent of the workspace on one card, with its model — from pi’s session log, or the default in pi’s own settings before the first turn.

    Docs: The Squad status card
  • 02

    Works through the canvas

    pi has no MCP client, so the extension is one. An arrow from the card is a set of tools.

  • Built by NeuroSquad

    Arrows are tools

    The extension is a small MCP client: an arrow to a terminal, note, browser or agent gives pi neurosquad_terminal_*, neurosquad_note_* and the rest as pi tools.

    Docs: Arrows are tools
  • Built by NeuroSquad

    New tools in the same turn

    When an arrow appears, the extension re-lists the tools and switches the new ones on. A call that draws an arrow itself waits for that, so pi can use the new card right away.

    Docs: New tools in the same turn
  • It can add cards itself

    canvas_spawn_card opens a terminal, a note, a browser or a helper — another pi with a first prompt — next to it, joined by an arrow.

    Docs: It can add cards itself
  • Canvas mode

    pi starts with --exclude-tools bash,powershell, so commands run in terminal cards you can watch. pi has no web tools of its own to take away.

    Docs: Canvas mode
  • Built by NeuroSquad

    MCP servers, asked per call

    Servers you installed from the MCP Registry reach pi through the extension. Before each call pi shows NeuroSquad’s dialog: Allow once, Allow for this session, or Deny.

    Docs: MCP servers, asked per call
  • 03

    Built for long runs

    Full contexts, failed turns and budgets are handled on the card.

  • Context meter

    At the end of each turn pi reports its own count — tokens and the window of the model that ran — so the ring shows what pi compacts against.

    Docs: Context meter
  • Compact

    The Compact button sends pi’s own /compact.

    Docs: Compact
  • Continues after a limit

    pi retries on its own first. A turn that still fails reports its error and Retry-After; the card counts down to the reset and sends “continue”.

    Docs: Continues after a limit
  • Prompt queue

    Line up the next messages: each goes out when pi has settled, never while a retry or a follow-up is still coming. Daily prompts too.

    Docs: Prompt queue
  • Journal and hand-off

    The last answer is read from pi’s session file: into a connected note after each turn, into a fresh agent’s first prompt, back to a lead waiting in agent_wait.

    Docs: Journal and hand-off
  • 04

    Works in a team

    Several pi agents — or a mix of CLIs — on one project without stepping on each other.

  • Isolated worktrees

    Give an agent its own git worktree, so parallel agents never edit the same files. A setup command and files to copy prepare it before pi starts.

    Docs: Isolated worktrees
  • Add a reviewer

    One click starts an agent on a different CLI in the same worktree, with an arrow from pi and a prompt to review without editing anything.

    Docs: Add a reviewer
  • Built by NeuroSquad

    Skills from skills.sh

    An arrow to a skill card gives pi skill_load, with each skill and when to use it — through the same extension as every other tool.

    Docs: Skills from skills.sh
  • No stop at project trust

    pi asks before it trusts a project’s own .pi or .agents/skills. You already chose this folder, so the card passes --approve — for that run only; pi’s trust list is not written.

    Docs: No stop at project trust
  • No dangerous mode — none needed

    pi never asks before running a tool, so a pi card always works the way dangerous mode works elsewhere. The switch is hidden rather than pretending to do something.

    Docs: No dangerous mode — none needed
  • 05

    Cost, control and access

    What it spends, what it may spend, which model it runs on, and how you reach it.

  • Exact usage and cost

    Read from pi’s own session files, with the cost pi recorded. Every session the card entered is counted to it, and tools that ran models of their own are counted too.

    Docs: Exact usage and cost
  • Budget brake

    Past the workspace limit the card gets Escape — Ctrl+C would only clear pi’s editor, and a second one would quit it. The session is kept; automatic prompts stop until you raise the limit.

    Docs: Budget brake
  • OpenRouter models

    The extension registers its own provider with the card’s key, so a login you saved in pi can’t override it. The key lives only in that card’s environment.

    Docs: OpenRouter models
  • Attributed to NeuroSquad

    On every OpenRouter request — your own pi login included — the extension replaces pi’s attribution headers with NeuroSquad’s.

    Docs: Attributed to NeuroSquad
  • From your phone

    Scan a QR code and the whole canvas opens in the phone’s browser: read pi’s terminal, answer its dialog, send the next prompt.

    Docs: From your phone
At a glance

Who’s waiting, and what it cost

Two cards that answer the questions you ask most when several pi agents run at once.

The Squad status card

Every agent of the workspace with its status, model and turn time. The one waiting on you comes first, with its dialog’s title. Tap a status to filter.

  • coupon-fixPiclaude-sonnet-4-5⚠️ Dangerous command: rm -rf dist — Allow?Needs you3:51
  • api-migrationPiclaude-sonnet-4-5Move routes to the new clientWorking12:24
  • deps-auditPigpt-5-miniCheck outdated packagesWorking4:08
  • docs-passPigpt-5-miniUpdate the READMEFinished6 min. ago

Usage & cost

Read from pi’s session files on your disk, with the cost pi recorded for each request, and matched to the card by the sessions it reported.

AgentTokensCost
coupon-fix1,108,442$2.68
api-migration796,120$1.71
docs-pass241,906$0.09
Total2,146,468$4.48
Exact to the picodollar; rounded only on screen.After /new or /resume, every session the card used still counts to it.
Under the hood

The real pi, plus a few arguments

NeuroSquad starts the same pi you run yourself, in a real terminal in the card. This is everything it adds:

What NeuroSquad adds to the command
❯ pi
--session-id <card id>first launchthe card’s id becomes pi’s session id
--session <its session id>later launchesthe session pi last reported, after a restart
--approveevery launchtrust this project’s own pi files, for this run only
-e <userData>/pi/neurosquad-extension.jsevery launchstatus, MCP tools, dialogs and OpenRouter — one file for every card
NEUROSQUAD_MCP_TOKEN, NEUROSQUAD_HOOK_URL … in the environmentevery launchthis card’s endpoints and token, never on disk or in argv
--exclude-tools bash,powershellcanvas modepi’s shell tools off; the canvas’s terminals instead

Nothing written to ~/.pi

Settings, logins, extensions and sessions of your own pi are left alone. The extension lives in NeuroSquad’s data folder.

No dangerous-mode flag

There is nothing to skip: pi never asks before a tool. A card on OpenRouter adds --model neurosquad-openrouter/<model>.

Interrupted with Escape

Escape stops a pi turn and keeps the process. The budget brake and every other stop use it; Ctrl+C would clear the editor or quit.

FAQ

pi in NeuroSquad, answered

Give pi a canvas

Free for Windows 10 and 11. Your code, your login and your costs stay on your machine.