Some Plugins To Get Started With Pi

Overview

I see the Pi coding agent a lot like emacs & vim. It’s filled with possibilities, but the bare bones version is only technically usable. To really get the kind of interactions you want you need to add some useful packages.

What follows is the collection of extensions I’ve ended up with.

Agentic Functionality

⚠️ pi-subagents & pi-agent-flow are likely incompatible with each other. pi-subagents is the most popular one, and has other extensions specifically designed to work with it. I’ve been using it without any problems.

pi-subagents

pi-subagents lets Pi delegate work to focused child agents. Use it for code review, scouting, implementation, parallel audits, saved workflows, background jobs, and anything else that benefits from a second or third set of model eyes.

pi-agent-flow

Long conversations can get messy—context bloats, tool calls get duplicated, and the real signal gets lost in the noise. Pi Agent Flow solves this by forking each task into a focused, isolated child process with only the context it actually needs.

See configuration details in README.

Pi can’t search the web by default, because that isn’t just a matter of scraping search results from web pages. Ultimately you need to connect to a server that has an API that you can invoke to do web search stuff.

I’ve listed two options below.

pi-web-access

Web search, content extraction, and video understanding for Pi agent. Zero-config Exa search, optional browser-cookie Gemini Web, or bring your own API keys.

⚠️ WARNING: defaults to using Exa for web search, which is free for ≤ 1,000 searches per month, and has a complex pricing system that isn’t obvious how it’ll play out. I think the Exa integration also needs the Exa MCP server. Instead of trying to figure all that out I gave it an API key for my Google Gemini account.

Zero Config — Works out of the box with Exa MCP (no API key needed). Add API keys for Exa, Perplexity, or Gemini API for more control, or opt into browser-cookie access for Gemini Web.

Video Understanding — Point it at a YouTube video or local screen recording and ask questions about what’s on screen. Full transcripts, visual descriptions, and frame extraction at exact timestamps.

Smart Fallbacks — Every capability has a fallback chain. Search tries Exa, then Perplexity, then Gemini API, then Gemini Web when browser cookies are enabled. YouTube tries Gemini Web when enabled, then API, then Perplexity. Blocked pages retry through Jina Reader and Gemini extraction. Something always works.

GitHub Cloning — GitHub URLs are cloned locally instead of scraped. The agent gets real file contents and a local path to explore, not rendered HTML.

pi-kagi-api

Already have a Kagi account? This is less functional than pi-web-access but… 🤷‍♀️

API pricing is currently $0.012/request for “search” and $0.004/request for “extract” to get clean content from any URL.

⚠️ There are multiple packages with this name. You want this one by mjakl

  • Install with pi install npm:@mjakl/pi-kagi-api
    • Follow the instructions in the repo’s README to generate an API key and save it so that this packaeg can use it.
  • Package Details

Integrations

pi-mcp-adapter

Let’s you use MCP servers

rpiv-args

Enables you to create skills that take arguments.

Pass arguments to your skills like a shell command. rpiv-args adds $1, $ARGUMENTS, $@, ${@:N}, and ${@:N:L} placeholders to Pi Agent skills - write /skill:deploy api production and your skill body sees $1 = api, $2 = production. Skills without placeholders are untouched, so installing rpiv-args is safe for any existing skill collection.

pi-chrome

Enables Pi to use your existing signed-in Chrome profile after explicit authorization.

pi-chrome is backed by a small MIT-licensed Chrome extension that runs inside the Chrome profile you already use — including every site you’re already signed into. Agents can inspect or control Chrome only after you run /chrome authorize in the current Pi session.

Note: installing the required extension in chrome is a little weird. Read the docs in the repo’s README carefully.

Observability

pi-kanban

Click around a fully interactive dashboard with synthesized sessions, tasks, and subagents — no install.

pi-bar

A wee status bar extension at the bottom that tells you model, effort level, % of context used, and more. Not as fancy as pi-powerline-footer but also won’t require as many resources for things you don’t really info on.

See the README for a screenshot, and instructions on how to configure the colors.

Human Interaction

rpiv-ask-user-question

Let the model ask you structured clarifying questions instead of guessing. rpiv-ask-user-question adds the ask_user_question tool to Pi Agent - a tabbed dialog with single- and multi-select questions, side-by-side previews, per-option notes, and a Submit tab that reviews answers before they go back to the model.

  • Install with pi install npm:@juicesharp/rpiv-ask-user-question
  • Package Details

plannotator

(Plan + Annotator) Provides an interactive way to annotate the agent’s plans via a nice web UI instead of it just spewing uneditable text to you in chat. The results are SO much better than trying to read plan details in the terminal. This tool is available for most agentic platforms.

Check out the demo videos linked in the GitHub readme

rpiv-btw

Ask a side question without polluting the main conversation. rpiv-btw adds /btw <question> to Pi Agent - a lightweight side agent picks up a read-only clone of your current conversation and answers in a panel at the bottom of the terminal. The side agent remembers its own /btw thread for follow-ups, while your main chat keeps going - its transcript is never polluted.

pi-permission-system

  • Hides disallowed tools before the agent starts — no wasted turns probing for blocked tools

  • Enforces allow / ask / deny at tool-call time with UI confirmation dialogs

  • Controls bash commands with wildcard pattern matching ( git *: ask, rm -rf *: deny )

  • Gates MCP and skill access at server, tool, and skill-name granularity

  • Protects sensitive file patterns — cross-cutting path rules deny .env, ~/.ssh/* , etc. across all tools and bash at once

  • Guards external paths — prompts before file tools or bash commands reach outside cwd

  • Forwards prompts from subagentsask policies work even in non-UI execution contexts

  • Broadcasts UI prompt eventspermissions:ui_prompt fires only when the permission system is about to invoke the active user-facing permission UI

  • Native @gotgenes/pi-subagents integration — in-process child sessions register with the permission system automatically, enabling per-agent policy enforcement and ask \-state forwarding to the parent UI without configuration

  • Install with pi install npm:@gotgenes/pi-permission-system

  • Package Details

pi-markdown-preview

Preview assistant responses and local Markdown, LaTeX, code, diff, and other text-based files from pi in the terminal, browser, or as PDF, with math rendering, syntax highlighting, Mermaid, and theme-aware styling.

Mostly I think this is going to be useful when it gives you big complicated responses and some syntax highlighting would help.

See Usage Instructions in the repo’s README.

  • Install With pi install npm:pi-markdown-preview
    • ⚠️ Requires pandoc to be installed
  • Package Details

Resource Minimizization

pi-lean-ctx

Pi Coding Agent extension that provides ctx_-prefixed tools backed by lean-ctx for 60–90% token savings.

Whenever it’s invoked it outputs how many tokens were saved. I’ve everything from no savings up to about 90%. Regardless if it meets that advertised 60+, it’s still saving tokens.

  • Install with pi install npm:pi-lean-ctx
    • ⚠️ Requires lean-ctx to be installed. Follow the instructions for installing it as an MCP After installing lean-ctx and pi-lean-ctx run lean-ctx onboard, then follow the instructions.

      If lean-ctx doctor shows a conflict on the Dashboard Port you can theoretically set it with the LEAN_CTX_PROXY_PORT environment variable. However I haven’t made this work. Instead if i want to see the dashboard I run lean-ctx dashboard --port=3334 (or whatever port you want to use if the default (3333) is being used by something else.

  • Package Details

Code Helpers

pi-simplify

When invoked, /simplify detects changed files (via git diff ) and instructs the agent to review them with these principles:

  • Preserve functionality : never change what the code does

  • Apply project standards : follow conventions from CLAUDE.md / AGENTS.md

  • Enhance clarity : reduce complexity, eliminate redundancy, improve naming

  • Maintain balance : avoid over-simplification

  • Install with pi install npm:pi-simplify

  • Package Details

Potentially Cool things

These look cool, but I haven’t tried them.

pi-hermes

I like the idea of Hermes, but I’m not convinced it’s worth using because I haven’t seen any answers to the question of how works without bloating the context window. Only install this if you’re willing to take that risk.

Your Pi agent normally forgets everything when you close a session. This extension fixes that.

  • 🔍 Search every conversation — “what did we discuss about auth?” finds it instantly

  • 🧠 Persistent memory — facts, preferences, corrections survive across sessions

  • ⚠️ Learns from failures — remembers what didn’t work so you don’t repeat mistakes

  • 🏷️ Categorized memories — failures, corrections, insights, conventions, and tool quirks organized for fast retrieval

  • 🛡️ Secret scanning — API keys and tokens are blocked from being saved

  • 📚 Procedural skills — the agent saves how it solved problems, not just what

  • Background learning — reviews every 10 turns, saves what matters

  • 🔄 Auto-consolidation — merges entries when full, never loses data

  • Install with pi install npm:pi-hermes-memory

  • Package Details

pi-studio

Extension for pi that opens a local two-pane browser workspace for working with prompts, responses, live working details, Markdown and LaTeX documents, interactive HTML previews, code files, REPL sessions, and other common text-based files side by side. Annotate responses and files, add local comments, write, edit, run prompts, send code to a REPL, browse prompt and response history, request critiques, and use live preview for code, Markdown, LaTeX, and interactive HTML.

There’s a video in the repo’s README.

pi-actors

pi-actors turns trusted local programs, scripts, recipes, services, pipelines, and sub-agents into addressable actors that agents can spawn, message, inspect, and compose.

It is not just a command registry. A tool is a verb. An actor is a noun with time: address, lifecycle, state, logs, mailbox, artifacts, and an interaction contract.

program / process / service
→ command template
→ actor recipe
→ spawn
→ run:<id>
→ message / inspect / artifacts

gentle-engram

How It Works

  1. Agent completes significant work (bugfix, architecture decision, etc.)
  2. Agent calls mem_save → title, type, What/Why/Where/Learned
  3. Engram persists to SQLite with FTS5 indexing
  4. Next session: agent searches memory, gets relevant context

Full details on session lifecycle, topic keys, and memory hygiene → docs/ARCHITECTURE.md

  • Install With pi install npm:gentle-engram
    • ⚠️ requires the go binary to be installed. See the repo’s README for instructions.
    • You may also need to run engram setup pi after installing the binary. It’s not clear.
  • Package Details

pi-smart-fetch

Better web fetching for agents. I really want to try this, I’m just unsure how it’ll interact with pi-web-access

The “Defuddle extraction” uses defuddle which appears to be a variant on the readability algorithm to download just the contents of the web pages.

*Features

  • 🔐 Browser-like TLS/SSL + HTTP fingerprints — better success on bot-defended pages
  • 🧹 Defuddle extraction — clean readable content instead of noisy HTML
  • 🧠 Useful metadata — title, author, site, language, published date when available
  • 📦 Downloads + large file support — stream attachments and binaries to temp files
  • 🔁 Client-side <meta> redirects — follows sane meta refresh redirects with loop limits
  • 🔗 Alternate content fallback — when extraction produces no/thin content, follows qualified <link rel="alternate" type="..."> entries in <head> that match the requested output format
  • Batch fetch — fetch many URLs with bounded concurrency
  • 📝 Multiple output formatsmarkdown, html, text, json, raw

pi-tldr

During a prompt, pi displays a TLDR box like:

╭ tldr ─────────────────────────────────────────────╮
│ Inspecting the extension package structure        │
╰───────────────────────────────────────────────────╯

The TLDR updates as pi works, including during tool calls and final responses.

pi-agent-browser-native

Allows pi to drive Chrome & maybe other browsers. Not sure. There’s a lot in the docs. One thing it does do is allow you to take screenshots of the browser.

Something Custom

One of the key features of pi is its knowledge and ability to modify itself, and invoking this is surprisingly easy to do.

For example, macOS ships with a positively ancient version of Ruby. I - like many others - use the rbenv Ruby version manager. pi was attempting to run some ruby commands to test things and they all kept failing because the version of ruby was too old. So, I started a new session, and told pi to create an extension that used whatever ruby version was specified in the .ruby-version file or the default supplied by rbenv. A little later I realized I needed to make sure it invoked bundle and gem via the current rbenv specified version of ruby too.

Now, it just uses the right versions all the time.

So, don’t be afraid to just tell it to make you what you need if someone else hasn’t already created it.