@pi-unipi/unipi
All-in-one extension suite for Pi coding agent
Package details
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 opento 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 startto 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:
- Create
packages/<name>/with apackage.jsonand anindex.ts. - Import events and constants from
@pi-unipi/core. - Emit
MODULE_READYwhen the package loads. - Add the package to
packages/unipi/index.tsand to the rootpackage.json. - Run
npm run typecheckandnpm test.
Import from @pi-unipi/core, never from a peer package (event bus).
Contributing
- Fork the repository.
- Create a branch.
- Make your change.
- Run
npm run typecheckandnpm test. - Open a pull request.
One job per package. Docs follow the style guide.
License
MIT © Neuron Mr White