p0's native terminal coding agent.
Peezy is a terminal coding agent by p0 — the AI lab. As of 0.3 it runs its own agent loop end to end: streaming chat with tool calling, native file/search/shell tools with path confinement and approvals, session persistence with resume, and a dot-matrix TUI. No third-party agent binary underneath.
npm install -g @p0systems/peezy
peezyOr with Homebrew:
brew install p0systems/tap/peezySign in with p0 to get free daily usage through the hosted gateway:
peezy login
peezy "summarize this repo"Headless one-shots (the lane scripts and CI should use):
peezy run -p "explain @src/config.ts"
peezy run -p "fix the failing test" --json # NDJSON event stream
peezy run -p "add a README" --capture out.jsonl # full trajectory capture- Tools:
read_file,write_file,edit_file(exact search/replace),bash(timeouts + output caps),list_files,grep(gitignore-aware),todo_write, plus gateway-backedweb_search,fetch_url,generate_image. - Approvals:
--approvals auto|ask|plan. Defaultask— writes and commands prompt first ([y]/[n]/[a]lways).planis read-only exploration. - Confinement: file tools are locked to the working directory (symlink escapes included). Opt out per-config only.
- Context: automatic compaction as the window fills; ctx% in the status bar.
- Sessions: every session is logged to
~/.peezy/sessions/<id>.jsonl.peezy --resume(or/resume) picks up where you left off. Opt out withPEEZY_NO_SESSIONS=1orpeezy config set sessionLogging false. - Project instructions: a
PEEZY.mdorAGENTS.mdin your repo root is read into the system prompt.
/model [name]— list or switch models (fuzzy matching)/status— plan, usage windows, credits/resume,/clear,/approvals,/upgrade,/help,/quitescinterrupts a running turn ·@mentions files · up-arrow recalls input history
Free login includes daily usage. Peezy Go ($5 first month, then $10/month)
unlocks the full model lineup and much higher rolling limits. peezy upgrade
or /upgrade opens checkout; when you hit the free limit the TUI shows the
subscribe screen with live pricing.
First run creates ~/.peezy/config.json (0600). Browser login stores the
gateway key there — do not commit it. 0.2.x configs migrate automatically
(sandboxMode/approvalPolicy map onto approvalMode; old fields are
preserved on disk).
Environment overrides: PEEZY_API_KEY, PEEZY_BASE_URL, PEEZY_MODEL,
PEEZY_PROVIDER, PEEZY_WEB_URL, PEEZY_NO_SESSIONS, PEEZY_NO_BROWSER,
plus per-provider keys (OPENAI_API_KEY, OPENROUTER_API_KEY,
AI_GATEWAY_API_KEY, CUSTOM_OPENAI_API_KEY).
peezy config show | path
peezy config use <provider-id>
peezy config set apiKey <key>
peezy providers | models | credits | sessions | toolsBuilt-in providers: peezy, openai, openrouter, vercel, local,
custom — plus any OpenAI-compatible provider from the live Models.dev feed
(peezy providers lists what's runnable).
npm install
npm run typecheck
npm test
npm run build
npm link && peezy --helpRun from source: npm run dev -- --help.
npm run typecheck && npm test && npm run build
npm audit --audit-level=high
npm pack --dry-run
npm publish
npm run release:homebrew # rewrites homebrew/peezy.rb with the published tarball shaDo not commit ~/.peezy/config.json, API keys, or .env files. Session
JSONL files can contain file contents from your repos — they stay local under
~/.peezy/sessions/. See SECURITY.md.
MIT