Pi's plugin ecosystem is great, and none of this is a criticism of the people who built pieces of it. But there's a gap: on Pi, plugins don't talk to each other. Install one and it has no idea another exists. That was the problem that started this.
I was using the subagent plugin and wanted one thing — the cost of a subagent to show in my footer, tracked across the whole session. To get that I had to build both the footer and the subagent, and a bus for them to share. Once they were connected, the rest followed: subagent todos that flow back into the main agent. And the hardest one — a subagent asking the user a question, and the parent hearing the answer and routing it back. All of that is solved now.
So pi-archimedes is the set of extensions that actually cooperate — and because I was building them together, I also gave them a single point of view: minimal, but designed. Matching chrome, a footer that says what matters, diffs that fit the theme. Install once, stop thinking about it.
It's also a door. Want only the footer? pi install @pi-archimedes/footer. Only the diff renderer? pi install @pi-archimedes/diff. Mix and match.
This is the only Pi package I run. If you took it apart and put it back together differently, that'd be exactly what I want.
→ Open an issue · Start a discussion
When installed via the meta package, the seven components share state and cooperate. For example, @pi-archimedes/subagent emits cost events through @pi-archimedes/core/bus; the footer picks them up via CostAccumulator and merges subagent tokens and cost into the main status bar. The agent manager reuses Core's chrome and color palette. Install pieces individually and these integrations disappear.
🎬 Core (@pi-archimedes/core)
The visual chrome you see on every Pi session.
- Animated splash screen with configurable styles
- Framed editor with double-press quit guard
- Muted thinking blocks
📊 Footer (@pi-archimedes/footer)
A status bar that surfaces what matters without getting in the way.
- Directory, git branch (with clean/dirty indicator), model, thinking level, worktree
- Token stats (↑input ↓output + cost)
- Color-coded context window bar
🔍 Diff (@pi-archimedes/diff)
Syntax-highlighted diffs that read at a glance.
- Shiki-powered split and unified views
- Word-level emphasis on changed characters
- Auto-derived theme colors
- Graceful fallback to plain text
🖼️ Image-paste (@pi-archimedes/image-paste)
Paste screenshots straight into the chat.
- Paste images from clipboard (Ctrl+V on Linux, Alt+V on Windows) with inline preview
🤖 Subagent (@pi-archimedes/subagent)
Dispatch work to other agents and watch them work in real time.
- Sub-agent dispatch with live TUI streaming
- Parallel execution mode
- Per-subagent tool counts and token usage
- Unified cost summary
Full CRUD TUI for .pi/agents/*.md files — searchable list, model picker, tool picker, dirty-tracking, cross-scope collision warnings.
Available when installed via pi-archimedes (the meta package), not as a standalone @pi-archimedes/subagent install.
📋 Todo (@pi-archimedes/todo)
Track work without leaving the session — including what your subagents are doing.
manage_todo_listtool with read/write operations- Auto-clear when all todos are completed
- Multi-column widget — main agent + per-subagent todos side by side
/todosand/todos clearcommands
💬 Ask (@pi-archimedes/ask)
Ask structured questions and let the agent act on the answer — from the main agent or from inside a subagent.
Most question tools only work when the main agent calls them. Ask works everywhere: call it directly and you get the full interactive prompt; spawn a subagent that needs a decision, and its ask call surfaces in your TUI — the subagent blocks until you answer, then carries on with your choice. No temp files, no pipes — just a bidirectional IPC channel that feels instant.
From the main agent:
- Tabbed multi-question flow with submit review
- Single-question picker with instant submit
- Inline note editing per option
- Markdown context descriptions
- Multi-select support
- Automatic "Other (type your own)" handling
From a subagent:
- The same rich UI appears in the parent TUI, even mid-stream
- The subagent blocks on the call and receives your answer over IPC
- Works alongside live subagent streaming and cost tracking
pi install pi-archimedesThat's it. Reload Pi and you're set.
pi install @pi-archimedes/corepi install @pi-archimedes/footerpi install @pi-archimedes/diffpi install @pi-archimedes/image-pastepi install @pi-archimedes/subagentpi install @pi-archimedes/todopi install @pi-archimedes/ask
Run /archimedes to open the interactive settings panel. Navigate with arrow keys, press Enter to toggle or edit, Save to persist, ESC to cancel.
Each package reads from its own namespace in ~/.pi/agent/settings.json — for example, @pi-archimedes/footer reads from archimedes.footer.
| Setting | Type | Default | Description |
|---|---|---|---|
mutedTheme |
bool | false |
Use subdued colors for thinking blocks |
codeUnindent |
bool | true |
Remove common indentation from code blocks inside thinking sections |
labelText |
string | Thinking... |
Custom prefix shown before thinking blocks |
labelColor |
string | 255,215,0 |
RGB color for the thinking label |
animationStyle |
string | vertical-up |
Splash animation style (9 options) |
| Setting | Type | Default | Description |
|---|---|---|---|
splitThreshold |
number | 150 |
Minimum terminal columns for full footer (below this, simplified layout) |
| Setting | Type | Default | Description |
|---|---|---|---|
diffTheme |
string | github-dark |
Shiki syntax-highlighting theme |
diffSplitMinWidth |
number | 150 |
Minimum terminal columns to show split diff view (≥ 100) |
diffSplitMinCodeWidth |
number | 60 |
Minimum code columns per side in split view (≥ 30) |
Uses Pi's core terminal.showImages setting to control inline previews. No package-specific settings.
No settings yet. Tool/cost events flow through @pi-archimedes/core/bus for the footer to consume.
No settings yet.
pi-archimedes/
├── packages/
│ ├── core/ # @pi-archimedes/core — editor, message, startup, thinking
│ ├── ask/ # @pi-archimedes/ask — structured question tool
│ ├── footer/ # @pi-archimedes/footer — status bar
│ ├── diff/ # @pi-archimedes/diff — Shiki-powered diff rendering
│ ├── image-paste/ # @pi-archimedes/image-paste — clipboard images
│ ├── subagent/ # @pi-archimedes/subagent — sub-agent dispatch
│ └── todo/ # @pi-archimedes/todo — todo list with auto-clear
└── meta/ # pi-archimedes — meta-package bundling all seven
Each package is a focused TypeScript ESM module with its own src/index.ts entry point.
See AGENTS.md for import conventions, config namespaces, and contribution workflow.
- Pi TUI with extension support
- Node.js >= 24
- pnpm >= 10 (for development —
npm installis not supported;packageManagerfield pins pnpm via Corepack)
This is a pnpm workspace. To work on the source:
git clone https://github.com/danielcherubini/pi-archimedes
cd pi-archimedes
pnpm install
pnpm -r exec -- tsc --noEmit # type-check all packagesSymlink into your Pi extensions to test:
ln -s $(pwd) ~/.pi/agent/extensions/pi-archimedesRoot package.json declares "extensions": ["meta/src/index.ts"] — Pi loads it from the symlink.
See AGENTS.md for import conventions, config namespaces, and the release workflow.




