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).
pi install npm:pi-powerline-footerRestart pi to activate.
Activates automatically. Toggle with /powerline, switch presets with /powerline <name>.
| 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:
{
"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:
/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 fileHow file mode works:
- Vibes are loaded from
~/.pi/agent/vibes/{theme}.txtinto memory - Uses seeded shuffle (Mulberry32 PRNG) — cycles through all vibes before repeating
- New seed each session — different order every time you restart pi
- 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:
- When you send a message, shows "Channeling {theme}..." placeholder
- AI generates a themed message in the background (3s timeout)
- Message updates to the themed version (e.g., "Engaging warp drive...")
- During long tasks, refreshes on tool calls (rate-limited, default 30s)
- 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 |
| minimal | thinking:min |
purple-gray |
| low | thinking:low |
blue |
| medium | thinking:med |
teal |
| high | thinking:high |
🌈 rainbow |
| xhigh | thinking: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:
{
"colors": {
"pi": "#ff5500",
"model": "accent",
"path": "#00afaf",
"gitClean": "success"
}
}Colors can be:
- Theme color names:
accent,primary,muted,dim,text,success,warning,error,borderMuted - Hex colors:
#ff5500,#d787af
See theme.example.json for all available options.
