@yusukeshib/pi-colored-model-status
v0.1.4
Published
Color-code the active model in pi's footer so you can tell at a glance which model family (opus, sonnet, fable, gpt, gemini, …) is in use.
Maintainers
Readme
@yusukeshib/pi-colored-model-status
A pi extension that color-codes the active model in the footer, so you can tell at a glance which model family is in use.
It replaces the plain claude-opus-4-8 • medium text in the bottom-right of
pi's footer with independently background-colored model and thinking badges. Everything else the default
footer shows (cwd, git branch, token stats, context %, and other extensions'
status line) is faithfully reproduced.

Colors
Model families are matched by substring against the model id and painted with strongly distinct hues:
| Family | Color |
| ------------------------- | ---------------- |
| opus, terra | deep purple |
| sonnet, luna | bright cyan-blue |
| fable, sol | vivid orange |
| haiku | green |
| gpt, o1, o3, o4 | OpenAI teal |
| gemini | Google blue |
| grok | slate |
| anything else | gray (fallback) |
Thinking badges use the same colors as pi's input-area border for each thinking
level (off, minimal, low, medium, high, xhigh, max). They follow
the active pi theme, including theme changes and 256-color terminals. Model
badges choose a black or white foreground from the background's luminance.
Thinking badges also choose black or white text based on contrast with the
resolved border color. The badges follow model changes made via /model or
Ctrl+P.
Install
pi install npm:@yusukeshib/pi-colored-model-statusThen reload (or restart pi):
/reloadTo try it for a single run without installing:
pi -e npm:@yusukeshib/pi-colored-model-statusCustomize
Edit the MODEL_BADGES array at the top of
extensions/colored-model-status.ts.
Each entry maps substring keywords to an RGB background (and an optional fg):
const MODEL_BADGES = [
{ match: ["opus", "terra"], bg: [147, 51, 234] },
{ match: ["sonnet", "luna"], bg: [14, 165, 233] },
{ match: ["fable", "sol"], bg: [234, 88, 12] },
// …add your own, e.g.:
{ match: ["deepseek"], bg: [30, 90, 200] },
];Matching is a case-insensitive substring test against the model id, so gpt
matches gpt-4o, o3 matches o3-mini, and so on. The first matching entry
wins.
How it works
theme.bg() only accepts theme tokens, so to render arbitrary,
model-specific colors the extension emits raw SGR truecolor escapes
(48;2;R;G;B) directly. Thinking badges instead use pi's themed editor
border foreground color as their background, with contrasting text. It uses
ctx.ui.setFooter() to take over the footer and re-implements pi's default
footer layout, coloring only the model + thinking-level segment.
Because it re-creates the footer, it mirrors pi's default footer rendering as
of the pinned @earendil-works/pi-coding-agent version. If pi's footer layout
changes upstream, this extension may need updating to match.
Note on the (auto) context indicator
pi's default footer appends (auto) to the context-usage figure when
auto-compaction is enabled. That state is not exposed to extensions, so this
reimplementation leaves it blank. If you rely on that indicator, adjust
autoInd in the source.
Requirements
Requires a truecolor-capable terminal (most modern terminals: iTerm2, Kitty, WezTerm, Ghostty, Windows Terminal, VS Code). Check with:
echo $COLORTERM # "truecolor" or "24bit"License
MIT © Yusuke Shibata
