arpagon.co / pipi.dev ↗

❯ pi extensions

Pi is a harness you make yours.
These are the pieces I made.

Pi is a minimal agent harness you adapt with extensions. I build the ones I need to work with agents every day: undo, a sense of context health, worktree awareness, web access, and a spinner with taste.

6 packages on npm · pi-rewind ★ 116 · ~1.7K downloads/month (2026-10)

pi-rewind
❯ /rewind

  Rewind to checkpoint                    ◆ 4 checkpoints
› "add retry to client" → edit → client.ts           [feature]
  "write tests" → write → client.test.ts            [feature]
  "user prompt" → write → file.ts, edit → other.ts  [feature]
  "bootstrap" → bash                                ⚠️ main

  Restore: files + conversation · files only · conversation only
  ↩ Undo last rewind

Illustration of the picker described in the README

Real recording · v0.1.0 showcase (21 animations at the time)

~/project (main)
🧠 ████████░░░░│░░░░░│░░░░░ smart 64% left

… a few long tool outputs later …
🧠 ████░░░░│░░░░░│░░░░░ smart 36% left

… keep going …
⚠️ ████████████░│░░░░░ warm
🧟 ██████████████████ dumb — time to compact

Illustration of the footer zones (README)

❯ edit runs/agents/worktrees/issue-42-fix-login/src/auth.ts

🌳 issue-42-fix-login | 🌿 42-fix-login | dirty +3

❯ bash ls runs/experiments/site/visual-spike

🧪 site/visual-spike | experiment

Status lines from the README (example paths)

❯ /web-providers
{
  "tools": { "search": "codex", "contents": "cloudflare",
             "answer": "codex", "research": "codex" },
  "providers": {
    "codex": { "options": { "webSearchEnabled": true,
               "research": { "modelReasoningEffort": "high" } } },
    "cloudflare": { "accountId": "CLOUDFLARE_ACCOUNT_ID" }
  }
}

Config (README)

❯ /web-providers init
{
  "tools": { "search": "openai", "contents": "cloudflare",
             "answer": "openai", "research": "openai" },
  "providers": {
    "openai": { "baseUrl": "https://YOUR_AZURE_RESOURCE…/openai/v1/",
                "options": { "research": { "model": "o4-mini-deep-research" } } },
    "cloudflare": { "accountId": "CLOUDFLARE_ACCOUNT_ID" }
  }
}

Config (README)

pi-rewind

Undo for your agent.

Automatic git-based checkpoints of your working tree, so you can rewind file changes and conversation state when the agent makes a mistake.

  • /rewind: checkpoint browser → diff preview → restore
  • Esc+Esc for a quick files-only rewind
  • Restore files, conversation, or both, with a redo stack
  • Safe restore and branch safety; checkpoints survive restarts
❯ /rewind

  Rewind to checkpoint                    ◆ 4 checkpoints
› "add retry to client" → edit → client.ts           [feature]
  "write tests" → write → client.test.ts            [feature]
  "user prompt" → write → file.ts, edit → other.ts  [feature]
  "bootstrap" → bash                                ⚠️ main

  Restore: files + conversation · files only · conversation only
  ↩ Undo last rewind

Illustration of the picker described in the README

$ pi install npm:pi-rewind

pi-animations

A spinner with taste.

Replaces Pi's default spinner with 26 terminal animations for thinking, working and tool execution, from demoscene fire to Matrix rain to Unicode block loaders, rendered inline in ANSI true color with Nerd Font glyphs.

  • 26 animations, each tagged for thinking, working or tool calls
  • ANSI true color + Nerd Font glyphs, rendered inline
  • Interactive showcase to preview and pick

Real recording · v0.1.0 showcase (21 animations at the time)

$ pi install npm:pi-animations

pi-context-zone

Know when your agent is getting dumb.

A context health bar in the footer: see at a glance whether you're in the smart, warm or dumb zone before context rot sets in. Inspired by Dex Horthy's “No Vibes Allowed” talk.

  • Smart / warm / dumb zones at a glance
  • Lives in the footer, zero interaction
  • Helps you compact or start fresh at the right time
~/project (main)
🧠 ████████░░░░│░░░░░│░░░░░ smart 64% left

… a few long tool outputs later …
🧠 ████░░░░│░░░░░│░░░░░ smart 36% left

… keep going …
⚠️ ████████████░│░░░░░ warm
🧟 ██████████████████ dumb — time to compact

Illustration of the footer zones (README)

$ pi install npm:pi-context-zone

pi-worktree-tui-status

Which worktree is it touching?

A TUI-only indicator that shows which git worktree or disposable experiment the agent is touching when it edits files or runs commands on long paths. Detects; never manages.

  • Detects runs/agents/worktrees/<slug> and runs/experiments/<app>/<slug>
  • Shows branch and dirty state
  • Read-only: no git operations on your behalf
❯ edit runs/agents/worktrees/issue-42-fix-login/src/auth.ts

🌳 issue-42-fix-login | 🌿 42-fix-login | dirty +3

❯ bash ls runs/experiments/site/visual-spike

🧪 site/visual-spike | experiment

Status lines from the README (example paths)

$ pi install npm:pi-worktree-tui-status

pi-web-providers-codex-cf

Web search on your ChatGPT subscription.

A security-minimal web extension: web_search, web_answer and web_research through Codex with ChatGPT subscription auth, and web_contents through Cloudflare Browser Rendering markdown. Inspired by mavam/pi-web-providers.

  • search / answer / research via Codex (ChatGPT auth)
  • contents via Cloudflare Browser Rendering
  • Small surface: only the providers you use
❯ /web-providers
{
  "tools": { "search": "codex", "contents": "cloudflare",
             "answer": "codex", "research": "codex" },
  "providers": {
    "codex": { "options": { "webSearchEnabled": true,
               "research": { "modelReasoningEffort": "high" } } },
    "cloudflare": { "accountId": "CLOUDFLARE_ACCOUNT_ID" }
  }
}

Config (README)

$ pi install npm:pi-web-providers-codex-cf

pi-web-providers-az-cf

Same idea, on Azure OpenAI.

The same minimal web extension for OpenAI-compatible / Azure OpenAI Responses API (search, answer, deep research) plus Cloudflare Browser Rendering for page contents.

  • Azure OpenAI / OpenAI-compatible Responses API
  • Deep research model support
  • Cloudflare Browser Rendering for contents
❯ /web-providers init
{
  "tools": { "search": "openai", "contents": "cloudflare",
             "answer": "openai", "research": "openai" },
  "providers": {
    "openai": { "baseUrl": "https://YOUR_AZURE_RESOURCE…/openai/v1/",
                "options": { "research": { "model": "o4-mini-deep-research" } } },
    "cloudflare": { "accountId": "CLOUDFLARE_ACCOUNT_ID" }
  }
}

Config (README)

$ pi install npm:pi-web-providers-az-cf

Upstream contributions

Add Cloudflare Browser Rendering provider for web_contentsmavam/webfox · merged