@pi-unipi/unipi

All-in-one extension suite for Pi coding agent

Packages

Package details

extensionskill

Install @pi-unipi/unipi from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@pi-unipi/unipi
Package
@pi-unipi/unipi
Version
3.0.1
Published
Nov 2, 2026
Downloads
6,254/mo · 970/wk
Author
neuron-mr-white
License
MIT
Types
extension, skill
Size
6.2 MB
Dependencies
24 dependencies · 4 peers
Pi manifest JSON
{
  "skills": [
    "packages/memory/skills",
    "packages/btw/skills",
    "packages/ask-user/skills",
    "packages/mcp/skills",
    "packages/utility/skills",
    "packages/compactor/skills",
    "packages/notify/skills",
    "packages/kanboard/skills",
    "packages/updater/skills",
    "packages/subagents/skills",
    "packages/web-api/skills",
    "packages/dream/skills"
  ],
  "extensions": [
    "packages/unipi/bundled.js"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

Install

pi install npm:@pi-unipi/unipi

Needs Pi 0.87.1+. Installs 21 packages; each also works alone. Coming from 2.x: upgrade guide.

Why UniPi

UniPi adds what long Pi sessions need.

UniPi gives you How
Memory between sessions Facts and decisions go to Markdown files and to a MemPalace index.
Two models as one Fusion pairs a lead model with a sidekick model.
Work that finishes goal, ralph, swarm and graph modes keep the agent on a long task.
A warm prompt cache Changing state goes into new tail messages. The prefix stays the same.
One driver for each turn A turn arbiter selects one continuation when the agent stops.
Compaction with no model call The default vcc method rebuilds the summary from the full session history.
Parallel hands Subagents and background tasks work while the lead continues.
A board for deferred work Kanboard keeps tasks in Markdown files, with a web UI and a terminal UI.
Hang detection Watchdog asks a small judge model about long tool calls.
A short transcript Simple mode shows one line for each tool call. Ctrl+O expands it.
A view of the session /unipi:info shows cost, context use, spend history and what compaction saved.
A recap at the end The summarize skill gives the answer first, then open items, in plain words.

Proof

Published results behind each feature (not UniPi benchmarks).

Feature Benchmark Source
Memory 96.6% recall@5 on LongMemEval, with raw semantic search and 0 API calls. MemPalace · LongMemEval
Fusion Frontier-level FrontierCode score at up to 60% lower cost. Devin Fusion
Fusion with two frontier models 69.0% on DRACO for two frontier models together. The best single model scored 65.3%. OpenRouter Fusion · Mixture-of-Agents
Goal HumanEval pass@1 went from 80% to 91% with a loop on test feedback. Reflexion · Self-authored verification
Ralph Six repositories overnight for $297 in API cost (a reported hackathon result). Ralph loop · YC hackathon report
Swarm 90.2% higher than a single agent on Anthropic's research eval. Anthropic multi-agent research
Graph Up to 3.7× lower latency, 6.7× lower cost and about 9% higher accuracy than ReAct. LLMCompiler (ICML 2024)
Prefix cache Up to 90% lower cost and 85% lower latency for long prompts. Anthropic prompt caching · Modular handbook · our cache study

Kanboard

A task board per project, shared by you and the agent. The agent claims a task, works it and sends it to review.

  • Run /unipi:kanboard open to open the board in your browser.
  • Run /unipi:kanboard-add <title> to add a task without an agent turn.
  • Run /unipi:kanboard-do <request> to give the agent a budget of tasks and board writes.
  • Run /unipi:kanboard-autowork start to let the agent work every ready task.

More: Kanboard README.

See your session: /unipi:info

Cost, context use, heaviest tool output, spend history and what compaction saved.

More: Info Screen README.

Harness architecture

Mechanism Problem it solves
Event bus 21 packages must work together without import-time coupling.
Turn arbiter Several packages want to continue the run when the agent stops. Only one may act.
Prefix cache One changed byte in the request prefix makes the provider bill the full context again.
Compaction A summary must keep the live task, and it must not grow at each compaction.
Long-horizon Multi-turn work needs one driver, a separate judge and hard budgets.
Delegation Work goes to other models and processes. Each one needs a known context boundary.
Harness messages Text from the harness reaches the model as user text. The user must see where it came from.
Watchdog A timer cannot tell a hung command from a slow build.
flowchart LR
  stop(["agent stops"]) --> arb{"turn arbiter<br/>1 nudge maximum"}
  arb -- "priority 100" --> lh["long-horizon<br/>goal · ralph · swarm · graph"]
  arb -- "priority 50" --> claims["kanboard<br/>claimed task"]
  arb -- "priority 40" --> auto["kanboard<br/>autowork"]
  lh --> tail["new tail message<br/>(prefix stays cached)"]
  claims --> tail
  auto --> tail
  tail --> next(["next turn"])

Packages

Area Packages
Finish long work Long-Horizon · Workflow · Kanboard
Keep context Compactor · Memory
Work in parallel Fusion · Subagents · Background Tasks · BTW
Reach outside Web API · MCP · Notify
Stay safe Watchdog · Skill Registry · Ask User
See and control Footer · Info Screen · Input Shortcuts · Command Enchantment
Maintain Utility · Updater · Core

Meet Unicrab

The UniPi mascot. It says hello when Pi starts and leaves hints above the input (Alt+H, /unipi:hint). The making of Unicrab.

Docs

Development

git clone https://github.com/Neuron-Mr-White/unipi.git
cd unipi
npm install
npm run typecheck
npm test

To add a package:

  1. Create packages/<name>/ with a package.json and an index.ts.
  2. Import events and constants from @pi-unipi/core.
  3. Emit MODULE_READY when the package loads.
  4. Add the package to packages/unipi/index.ts and to the root package.json.
  5. Run npm run typecheck and npm test.

Import from @pi-unipi/core, never from a peer package (event bus).

Contributing

  1. Fork the repository.
  2. Create a branch.
  3. Make your change.
  4. Run npm run typecheck and npm test.
  5. Open a pull request.

One job per package. Docs follow the style guide.

License

MIT © Neuron Mr White