Powerline-style status bar extension for pi coding agent
npm install pi-powerline-footer

Customizes the default pi editor with a powerline-style status bar, welcome overlay, and AI-generated "vibes" for loading messages. Inspired by Powerlevel10k and oh-my-pi.
Working Vibes — AI-generated themed loading messages. Set /vibe star trek and your "Working..." becomes "Running diagnostics..." or "Engaging warp drive...". Supports any theme: pirate, zen, noir, cowboy, etc.
Welcome overlay — Branded splash screen shown as centered overlay on startup. Shows gradient logo, model info, keyboard tips, loaded AGENTS.md/extensions/skills/templates counts, and recent sessions. Auto-dismisses after 30 seconds or on any key press.
Rounded box design — Status renders directly in the editor's top border, not as a separate footer.
Live thinking level indicator — Shows current thinking level (thinking:off, thinking:med, etc.) with color-coded gradient. High and xhigh levels get a rainbow shimmer effect inspired by Claude Code's ultrathink.
Smart defaults — Nerd Font auto-detection for iTerm, WezTerm, Kitty, Ghostty, and Alacritty with ASCII fallbacks. Colors matched to oh-my-pi's dark theme.
Git integration — Async status fetching with 1s cache TTL. Automatically invalidates on file writes/edits. Shows branch, staged (+), unstaged (*), and untracked (?) counts.
Context awareness — Color-coded warnings at 70% (yellow) and 90% (red) context usage. Auto-compact indicator when enabled.
Token intelligence — Smart formatting (1.2k, 45M), subscription detection (shows "(sub)" vs dollar cost).
``bash`
pi install npm:pi-powerline-footer
Restart pi to activate.
Activates automatically. Toggle with /powerline, switch presets with /powerline .
| Preset | Description |
|--------|-------------|
| default | Model, thinking, path (basename), git, context, tokens, cost |minimal
| | Just path (basename), git, context |compact
| | Model, git, cost, context |full
| | Everything including hostname, time, abbreviated path |nerd
| | Maximum detail for Nerd Font users |ascii
| | Safe for any terminal |
Environment: POWERLINE_NERD_FONTS=1 to force Nerd Fonts, =0 for ASCII.
Transform boring "Working..." messages into themed phrases that match your style:
``
/vibe star trek → "Running diagnostics...", "Engaging warp drive..."
/vibe pirate → "Hoisting the sails...", "Charting course..."
/vibe zen → "Breathing deeply...", "Finding balance..."
/vibe noir → "Following the trail...", "Checking the angles..."
/vibe → Shows current theme, mode, and model
/vibe off → Disables (back to "Working...")
/vibe model → Shows current model
/vibe model openai/gpt-4o-mini → Use a different model
/vibe mode → Shows current mode (generate or file)
/vibe mode file → Switch to file-based mode (instant, no API calls)
/vibe mode generate → Switch to on-demand generation (contextual)
/vibe generate mafia 200 → Pre-generate 200 vibes and save to file
In ~/.pi/agent/settings.json:
`json`
{
"workingVibe": "star trek", // Theme phrase
"workingVibeMode": "generate", // "generate" (on-demand) or "file" (pre-generated)
"workingVibeModel": "anthropic/claude-haiku-4-5", // Optional: model to use (default)
"workingVibeFallback": "Working", // Optional: fallback message
"workingVibeRefreshInterval": 30, // Optional: seconds between refreshes (default 30)
"workingVibePrompt": "Generate a {theme} loading message for: {task}", // Optional: custom prompt template
"workingVibeMaxLength": 65 // Optional: max message length (default 65)
}
| Mode | Description | Pros | Cons |
|------|-------------|------|------|
| generate | On-demand AI generation (default) | Contextual, hints at actual task | ~$0.000015/msg, 500ms latency |file
| | Pull from pre-generated file | Instant, zero cost, works offline | Not contextual |
File mode setup:
`bash`
/vibe generate mafia 200 # Generate 200 vibes, save to ~/.pi/agent/vibes/mafia.txt
/vibe mode file # Switch to file mode
/vibe mafia # Now uses the file
How file mode works:
1. Vibes are loaded from ~/.pi/agent/vibes/{theme}.txt into memory
2. Uses seeded shuffle (Mulberry32 PRNG) — cycles through all vibes before repeating
3. New seed each session — different order every time you restart pi
4. Zero latency, zero cost, works offline
Prompt template variables (generate mode only):
- {theme} — the current vibe theme (e.g., "star trek", "mafia"){task}
- — context hint (user prompt initially, then agent's response text or tool info on refresh){exclude}
- — recent vibes to avoid (auto-populated, e.g., "Don't use: vibe1, vibe2...")
How it works:
1. When you send a message, shows "Channeling {theme}..." placeholder
2. AI generates a themed message in the background (3s timeout)
3. Message updates to the themed version (e.g., "Engaging warp drive...")
4. During long tasks, refreshes on tool calls (rate-limited, default 30s)
5. Cost: ~$0.000015 per generation (60 tokens @ haiku pricing)
The thinking segment shows live updates when you change thinking level:
| Level | Display | Color |
|-------|---------|-------|
| off | thinking:off | gray |thinking:min
| minimal | | purple-gray |thinking:low
| low | | blue |thinking:med
| medium | | teal |thinking:high
| high | | 🌈 rainbow |thinking:xhigh
| xhigh | | 🌈 rainbow |
The path segment supports three modes:
| Mode | Example | Description |
|------|---------|-------------|
| basename | powerline-footer | Just the directory name (default) |abbreviated
| | …/extensions/powerline-footer | Full path with home abbreviated and length limit |full
| | ~/.pi/agent/extensions/powerline-footer | Complete path with home abbreviated |
Configure via preset options: path: { mode: "full" }
pi · model · thinking · path · git · subagents · token_in · token_out · token_total · cost · context_pct · context_total · time_spent · time · session · hostname · cache_read · cache_write
powerline · powerline-thin · slash · pipe · dot · chevron · star · block · none · ascii
Colors are configurable via pi's theme system. Each preset defines its own color scheme, and you can override individual colors with a theme.json file in the extension directory.
| Semantic | Theme Color | Description |
|----------|-------------|-------------|
| pi | accent | Pi icon |model
| | primary | Model name |path
| | muted | Directory path |gitClean
| | success | Git branch (clean) |gitDirty
| | warning | Git branch (dirty) |thinking
| | muted | Thinking level |context
| | dim | Context usage |contextWarn
| | warning | Context usage >70% |contextError
| | error | Context usage >90% |cost
| | primary | Cost display |tokens
| | muted | Token counts |
Create ~/.pi/agent/extensions/powerline-footer/theme.json:
`json`
{
"colors": {
"pi": "#ff5500",
"model": "accent",
"path": "#00afaf",
"gitClean": "success"
}
}
Colors can be:
- Theme color names: accent, primary, muted, dim, text, success, warning, error, borderMuted#ff5500
- Hex colors: , #d787af
See theme.example.json` for all available options.