Skip to main content
Nika never asks you to configure blind. Two commands read your machine — offline, presence-only — and hand you the exact next step: nika welcome is the thirty-second mirror, nika doctor the exhaustive diagnosis with a fix line per gap.

The mirror

Captured verbatim against the released nika 0.109.2 on a machine with no keys, no configs, no editors wired — the stranger’s first screen (only the workspace path is shortened to ~/demo):
Three details worth noticing: the five-line workflow is real (an engine test pins that it checks clean — the sample only appears while your workspace has zero workflows), every count on the « this binary » line is derived live from the embedded pack (never hand-typed — the 15 providers are the runnable cloud + local set; the catalog counts 17 with the deterministic mock), and the state row names the gap, never a vendor: no inference path yet, and the proof door is one command (nika try 01-hello — offline, zero keys, nothing written). --json emits the machine mirror (welcome_version: 1); --ascii swaps every glyph for CI logs.

The diagnosis

Three honesty rules shape everything below:
  • Presence, never values. A key is reported set or unset — the value is never read into a variable, so it can never reach your terminal, a log, or a trace.
  • Offline by default. The base run touches nothing on the network. --ping (opt-in) TCP-probes your local ports only — never a vendor endpoint, and nothing is ever sent on the socket.
  • Diagnose-only. Doctor prints fixes, it never runs them. Your shell, your PATH, your configs stay untouched (nika wire is the explicit, idempotent mutator when you want one).

A fresh machine, honestly

Captured verbatim against nika 0.109.2 on a machine with no keys, no configs, no editors wired — the worst case, and the whole report:
(A healthy machine reads calm: with no workflow in hand, doctor cannot know which provider or editor you need, so unwired agents and unset keys fold into the one advisory line instead of shouting eighteen warnings — nika doctor --verbose unfolds every row with its own fix: line.) Read it in one pass:

Probe the local ports

The local providers row says « needs a running server » — --ping answers whether one is actually there (loopback connect, 300 ms cap, nothing sent):
One local server up = a fully sovereign inference path: no key, no cloud, no account. That is the machine from the capture running local models with nothing else configured.

For scripts and agents

Every fact above ships as JSON — agents and CI branch on summary.fail instead of parsing glyphs:

The fix that mutates, explicitly

Doctor never edits configs. When a row says fix: nika wire cursor, that command — and only that command — writes the MCP wiring, idempotently, preserving whatever other servers the config already carries:

Next

First workflow

Your first run needs none of the keys above — mock/echo is free and offline.

Local models

Turn the local row into a running, keyless inference path.

Editors

What the wired editor actually does (diagnostics · canvas · time-travel).

Agents

nika init briefs your agents; nika wire points them at the oracle.