Skip to content

doctor

Terminal window
nouride doctor

Every finding says what to do about it, and the command exits non-zero on a real problem — so it works inside a healthcheck or a CI step, not only in front of a person.

What it checks, in order

The order is deliberate. The half that works with no daemon runs first, because a config broken enough to matter is usually why nothing is running.

  1. Which config is loaded, and which data directory. Two lines, and they are the fastest way to spot that you are in the wrong working directory.
  2. The config itself — every lint the loader knows, with its hint.
  3. Can it reach the daemon? Everything below depends on this, so a failure here reports one accurate line rather than a wall of consequences, and stops.
  4. Providers with a credential. None at all is a hard failure — no agent can answer. One profile without a credential is a warning.
  5. Agent packs that failed to load, with the parse error.
  6. Agents actually running. None is a hard failure, and the hint distinguishes “none exist” from “loaded but disabled”.
  7. Declared workspace roots that do not exist. This is the check that was missing when a whole class of confusion happened: everything else reported green — agent running, gateway connected, provider credentialed — while every path inside that root was refused, which reads as the agent being broken.
  8. Agents pointing at a provider with no key, or at one that is not configured at all. This is the failure that looks like a model outage.
  9. Gateways. None connected is a warning — nothing can reach an agent except nouride chat. One that is dead is a failure with the restart command in the hint.
  10. Approvals waiting, because a tool call is blocked until answered.
  11. Messages queued, because turns may be backing up.
  12. Skills whose host software is missing. A warning if an agent has it on; noted and dismissed if nobody does.
  13. Skills an agent carries but cannot run — the tool axis, per agent, listing only what is actually missing for that one.
  14. Skills nobody has read in the audit history, reported as fine rather than as a fault.

What the output looks like

nouride doctor
✓ config: /srv/nouride/.nouride/config.toml
✓ data dir: /srv/nouride/.nouride/data
✓ daemon reachable at http://127.0.0.1:18254 (up 3120s)
✓ providers with credentials: nougate-anthropic
✓ agents running: nouva, nox
! nouva: workspace root does not exist — /home/you/projects/thing
Nothing in it can be read. Check [workspace] roots in agents/nouva/config.toml.
✓ gateway telegram:nouva: connected
✗ gateway discord:main is dead
Check its token, then `nouride gateway restart discord:main`.
1 problem(s), 1 warning(s)

is fine, ! is worth knowing, is what is actually broken. Only affects the exit code.

Two findings worth explaining

“skill X needs dot, not installed here.” A skill declares the programs it needs in its frontmatter, which is what makes this checkable at all. Without the check the failure is invisible until it is expensive: the skill loads, the agent reads it, follows the procedure, and step four dies on dot: command not found — halfway through a task, with an approval already spent.

“N of M skills have not been read in the audit history.” Every skill costs a line of every agent’s system prompt on every turn, whether or not it is ever read — measured at ~3.4 KB for eighteen of them on a live box. So one nobody has opened is a bill nobody chose to pay.

The window is the audit log’s, not a fixed ninety days. Last-read is derived from audit rows and [retention] audit_days defaults to 30, so beyond a month there is no evidence either way and a 90-day threshold would report every skill on the box as dead.

When it cannot reach the daemon

It stops there and says so, with the config path and the data directory already on screen. Those two lines are usually the answer: the CLI resolves the install relative to your working directory, so running it from /tmp looks for /tmp/.nouride/data/.control-token.

Terminal window
nouride config check [file] # would this configuration start? Nothing is launched
nouride status # agents, gateways, queue
nouride service status # which supervisor, and whether anything would respawn it