Skip to main content

Status-line integration

Claude Code's statusLine setting can show Fornax's latest verdict inline, right where you already look for session state.

Direct approach

If Fornax is the only thing you want in your status line for a given project, point statusLine straight at the CLI:

{
"statusLine": {
"type": "command",
"command": "fornax status",
"padding": 1
}
}
🛡 ✓ VERIFIED

Wrapper approach (when you already have a status line)

A project-level statusLine fully replaces the global one — it's a single command, not a mergeable list. If you already have a global status line (e.g. showing git branch, context usage, cost), don't overwrite it: write a small wrapper script that calls your existing status line first, then appends the Fornax segment as an extra line.

fornax-core does exactly this for its own dogfooding — see scripts/fornax-statusline.sh in horonomy/fornax-core, which calls the existing global status-line script with the same stdin JSON, then appends the Fornax segment. Wire it up as:

{
"statusLine": {
"type": "command",
"command": "<REPO_ROOT>/scripts/fornax-statusline.sh",
"padding": 1,
"refreshInterval": 3
}
}

replacing <REPO_ROOT> with this project's absolute path — settings.local.json is per-machine and gitignored, so a hardcoded local path there is correct (unlike in a committed file).

Failure containment

The wrapper script fails safe: if fornax isn't built or the daemon isn't running, it degrades to a plain message rather than erroring — a Fornax problem never breaks your status line, let alone the rest of Claude Code.

See also

Self-host / local development has the complete project-scoped hook + status-line configuration fornax-core uses on itself, including why it's project-scoped rather than global.