Configuration reference
Every knob is an environment variable. The status line ships sensible defaults, so configuration is optional and additive.
Where these go
These variables belong in the env block of ~/.claude/settings.json, alongside the statusLine entry from install. Set only the ones you want to change; every variable has a default and missing ones are left alone.
{
"env": {
"URDA_AI_FORGED_STATUS_LINE_ICON_MODEL": "🤖",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_WARN": "40",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_ALARM": "70"
}
}
Claude Code passes the env block to the script on each refresh, so changes take effect on the next status update.
Icon master switch
One switch hides every icon at once for a data-only line. Bars, labels, and colors stay; only the glyphs drop.
| Variable | Default | Effect |
|---|---|---|
URDA_AI_FORGED_STATUS_LINE_ICONS |
1 |
0 hides every icon for a data-only line; anything else keeps icons on. |
Junk values fail safe to icons-on. The per-icon variables below stay swap-only: blanking is the master switch's job, so a hidden icon never leaves an orphaned gap.
Per-icon overrides
Each segment's icon is its own variable. Set one to swap a single glyph; leave it unset to keep the default.
| Variable | Default | Controls |
|---|---|---|
URDA_AI_FORGED_STATUS_LINE_ICON_ALARM |
🔴 | Any gauge at or above the alarm threshold |
URDA_AI_FORGED_STATUS_LINE_ICON_CONTEXT |
🧠 | Context gauge, calm tier |
URDA_AI_FORGED_STATUS_LINE_ICON_CONTEXT_UNKNOWN |
🌀 | Context gauge before its first reading (???%) |
URDA_AI_FORGED_STATUS_LINE_ICON_DIR |
💾 | Directory segment (row 1) |
URDA_AI_FORGED_STATUS_LINE_ICON_EFFORT |
🦾 | Effort segment (row 1) |
URDA_AI_FORGED_STATUS_LINE_ICON_MODEL |
🔮 | Model segment (row 1) |
URDA_AI_FORGED_STATUS_LINE_ICON_RATE_5H |
⏳ | 5h rate gauge, calm tier |
URDA_AI_FORGED_STATUS_LINE_ICON_RATE_7D |
🪔 | 7d rate gauge, calm tier |
URDA_AI_FORGED_STATUS_LINE_ICON_THINKING |
🚫 | The Thinking: OFF flag (row 1) |
URDA_AI_FORGED_STATUS_LINE_ICON_WARN |
🟡 | Any gauge at or above the warn threshold |
Width discipline: pick a replacement that is a single code point, defaults to emoji presentation, and renders two columns wide, like every default here. Anything else, including a hidden U+FE0F variation selector, changes the glyph's width and drifts the bars out of alignment.
Thresholds
Two percentages set where each gauge escalates. Bar color and lead icon move together: calm below the warn threshold, warn from it, alarm from the alarm threshold. The shared pair covers every gauge; each gauge can also take its own pair.
| Variable | Default | Effect |
|---|---|---|
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_WARN |
50 |
Percent where a gauge enters warn / 🟡 |
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_ALARM |
80 |
Percent where a gauge enters alarm / 🔴 |
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_CONTEXT_WARN |
shared | Warn override for the context gauge |
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_CONTEXT_ALARM |
shared | Alarm override for the context gauge |
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_5H_WARN |
shared | Warn override for the 5-hour gauge |
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_5H_ALARM |
shared | Alarm override for the 5-hour gauge |
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_7D_WARN |
shared | Warn override for the 7-day gauge |
URDA_AI_FORGED_STATUS_LINE_THRESHOLD_7D_ALARM |
shared | Alarm override for the 7-day gauge |
Every gauge resolves its pair in the same order: its own two variables, then the shared pair, then the built-in 50 / 80. A pair is honored only when valid, both integers within 0-100 with WARN < ALARM; anything else falls back to the next level instead of turning the bands off. Setting one half of a pair inherits the other half from the fallback.
Theme
One switch retints the muted tones for a light terminal. The gray structure and the model text shift to values that read on a light background; the bar colors are untouched.
| Variable | Default | Effect |
|---|---|---|
URDA_AI_FORGED_STATUS_LINE_THEME |
dark |
light retints the gray structure and model text for a light terminal; unset or any other value renders the dark theme. |
Cache and update checks
Two detached side channels. Cache writing is off by default and mirrors the rate gauges to disk for other tools to read; the update checker is on by default, compares the published version at most weekly, and lights an update badge. Both run after the line prints, so neither can block or blank a render.
| Variable | Default | Effect |
|---|---|---|
URDA_AI_FORGED_STATUS_LINE_WRITE_CACHE |
0 |
1 writes rate-limit snapshots under $XDG_STATE_HOME/forged-statusline/ (default ~/.local/state) |
URDA_AI_FORGED_STATUS_LINE_UPDATE_CHECK |
1 |
0 disables the weekly fetch and the update badge |
The cache filenames and schema live in the README.
Every setting at once
The full view: every variable above in one env block, each at its default, for your viewing pleasure.
{
"env": {
"URDA_AI_FORGED_STATUS_LINE_ICONS": "1",
"URDA_AI_FORGED_STATUS_LINE_ICON_ALARM": "🔴",
"URDA_AI_FORGED_STATUS_LINE_ICON_CONTEXT": "🧠",
"URDA_AI_FORGED_STATUS_LINE_ICON_CONTEXT_UNKNOWN": "🌀",
"URDA_AI_FORGED_STATUS_LINE_ICON_DIR": "💾",
"URDA_AI_FORGED_STATUS_LINE_ICON_EFFORT": "🦾",
"URDA_AI_FORGED_STATUS_LINE_ICON_MODEL": "🔮",
"URDA_AI_FORGED_STATUS_LINE_ICON_RATE_5H": "⏳",
"URDA_AI_FORGED_STATUS_LINE_ICON_RATE_7D": "🪔",
"URDA_AI_FORGED_STATUS_LINE_ICON_THINKING": "🚫",
"URDA_AI_FORGED_STATUS_LINE_ICON_WARN": "🟡",
"URDA_AI_FORGED_STATUS_LINE_THEME": "dark",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_WARN": "50",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_ALARM": "80",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_CONTEXT_WARN": "50",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_CONTEXT_ALARM": "80",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_5H_WARN": "50",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_5H_ALARM": "80",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_7D_WARN": "50",
"URDA_AI_FORGED_STATUS_LINE_THRESHOLD_7D_ALARM": "80",
"URDA_AI_FORGED_STATUS_LINE_UPDATE_CHECK": "1",
"URDA_AI_FORGED_STATUS_LINE_WRITE_CACHE": "0"
}
}
Antigravity CLI (agy)
Antigravity CLI (agy) works too: it pipes a similar payload, and its quota windows drive the same bars. Built for Claude Code; agy is supported best-effort.
Install it with the opt-in --agy flag (fetches into ~/.gemini/antigravity-cli/):
curl -fsSL https://raw.githubusercontent.com/urda/forged-statusline/release/install.sh | bash -s -- --agy
Or with wget:
wget -qO- https://raw.githubusercontent.com/urda/forged-statusline/release/install.sh | bash -s -- --agy
Then add the printed statusLine block to ~/.gemini/antigravity-cli/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.gemini/antigravity-cli/urda-com-forged-statusline.sh"
}
}
GitHub Copilot CLI
GitHub Copilot CLI works too, best-effort: the context gauge and window badge read from Copilot's own field names. Its payload carries no rate or quota data, so the 5h/7d gauges stay absent.
Install it with the opt-in --copilot flag (fetches into ~/.copilot/):
curl -fsSL https://raw.githubusercontent.com/urda/forged-statusline/release/install.sh | bash -s -- --copilot
Or with wget:
wget -qO- https://raw.githubusercontent.com/urda/forged-statusline/release/install.sh | bash -s -- --copilot
Then add the printed statusLine block to ~/.copilot/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.copilot/urda-com-forged-statusline.sh"
}
}