pi-minions
Minimal recursive subagent orchestration for pi. No bundled agents, no opinions.
Package details
Install pi-minions from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-minions- Package
pi-minions- Version
0.20.1- Published
- Oct 29, 2026
- Downloads
- 437/mo · 321/wk
- Author
- kalindudc
- License
- MIT
- Types
- extension
- Size
- 160.8 KB
- Dependencies
- 4 dependencies · 4 peers
Pi manifest JSON
{
"extensions": [
"./extensions/pi/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-minions
Delegate work to minions: helper agents that a coding agent starts, follows and stops. pi-minions runs in two places:
- In bb, every thread can spawn minions as child threads, whichever agent provider runs it: pi, Claude Code, Codex, or an ACP agent such as Cursor or opencode. Minions run in the background and report back on their own.
- In pi, minions are foreground sessions that stream their progress into the parent session.
Both read the same personas: reusable minion configurations in Markdown files.
In bb
This repository is also a bb plugin. Install it from Git, or from a local checkout after running npm ci --ignore-scripts in it:
bb plugin install git:https://github.com/kalindudc/minions
bb plugin install path:/path/to/minions
Do not install it from npm: the npm package contains only the pi extension, so bb plugin install npm:pi-minions would find no bb entry files. If you also use pi, update pi-minions in pi to the same version first: pi-minions 0.19.0 and earlier register tools with the same names as the plugin, and pi refuses to start a bb thread that loads both.
Every bb thread then gets:
- the bb minion tools
spawn,list_agents,list_minions,show_minionandhalt, whichever provider runs the thread; - minions as child threads nested under the thread that spawned them.
spawnreturns at once, and bb reports each minion's answer to its parent when it finishes, fails or needs help; - a name, a colour and a personality for every minion, so you can tell them apart while they work;
- a Minions tab in the thread's side panel, where you can follow each minion, open its thread, message it, stop it, archive it or start a new one;
- a
[oo]button in the prompt box that shows the running, waiting, done and failed counts on hover and opens the Minions tab; - a goggles icon in each minion's colour on its row in bb's sidebar.

![The [oo] button in the prompt box, showing the minion counts on hover](https://cdn.jsdelivr.net/npm/pi-minions@0.20.1/docs/assets/bb_minions_button.png)

A minion runs on its persona's provider and model, or on its parent's, so one thread can hand work to another provider. Personas can also choose a reasoning level, a permission mode, a separate Git worktree, and whether the minion may spawn minions of its own; see bb persona fields. With the pi-quests bb plugin installed, the Minions tab and list_minions also show each minion's quest progress.
In bb's pi threads, pi-minions hands its minion tools to the plugin, so the agent sees one set of tools. Plain pi and pi under Herdr keep the foreground minions described below.
In pi
pi install npm:pi-minions
- Foreground
spawnviatasksfor single minions or parallel batches - Named agent discovery from pi/agents and minions directories
- Ephemeral built-in minions when no agent is specified
haltfor aborting running foreground minionslist_minionsandshow_minionfor current session visibility/minionsand/minions show <id|name>for live activity viewinglearn_minions,/minions learn, and/minions skillfor built-in usage guidance
In pi, the parent waits for its minions. Background minions, live detaching, and user steering commands are not part of the public surface.
Quick start
/spawn Summarize the test failures in this repository
/spawn Inspect src/tools and report risks --model claude-haiku
/minions
/minions show kevin
/minions learn
/halt kevin
For LLM-callable tools, use:
spawn({ tasks: [{ task: "Audit the auth module" }] })
spawn({ tasks: [{ task: "Read src" }, { task: "Read test" }] })
list_agents({})
list_minions({})
show_minion({ target: "kevin" })
halt({ id: "all" })
learn_minions({})
Configuration
The pi extension reads its settings from pi's settings files. The bb plugin reads only persona files.
{
"pi-minions": {
"minionNames": ["kevin", "stuart", "bob"],
"allowEphemeral": true,
"display": {
"outputPreviewLines": 20,
"observabilityLines": 6,
"showStatusHints": true,
"spinnerFrames": ["[oo]", "[o-]", "[--]", "[-o]"]
},
"toolSync": {
"enabled": true,
"maxWait": 5
}
}
}
Develop
Install the dependencies with npm install. It also runs prepare, which checks the toolchain and sets this repository's git hooks. Then:
- Run
bb plugin install path:$PWDonce, thenbb plugin dev $PWDwhile you work. It rebuilds and reloads the plugin on every save anywhere in the repository exceptdist/,node_modules/and.git/, so saves undertmp/count too. Without it,bb plugin reload pi-minionsrebuilds from the current files. - bb applies tool and instruction changes only when a thread starts a new provider session, so test those changes in a new thread.
- pi sessions started in this checkout load
extensions/pi/from the working tree, through.pi/settings.json.
See Contributing for the checks to run before review.
Documentation
The npm package ships source plus standard npm always-included files. The docs/ directory and changelog file are intentionally not included in the published tarball.