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.

VariableDefaultEffect
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.

VariableDefaultControls
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.

VariableDefaultEffect
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.

VariableDefaultEffect
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.

VariableDefaultEffect
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"
  }
}