Skip to main content
The law: every human-facing surface has a --json twin, every machine payload carries a version envelope, and evolution is additive-only β€” a field is added, never renamed or removed within a version. Agents and tooling parse the JSON; the pretty output is free to improve without breaking anyone.

The wires

nika check - reads the workflow from stdin β€” editors and agents audit keystroke-fresh buffers without touching the disk.
Prefer typed TypeScript over process glue? The released LocalNika client owns binary discovery, JSON decoding, cancellation, run events and typed errors. The SDK runtime guide maps these wires to code.

The hosted twins

The same law reaches the web: the machine surfaces an agent can fetch without a binary, each probed and versioned like the CLI wires.

The exit-code contract

Scripts and agents branch on exit codes, so they are the engine CLI exit-code contract (locked Β· additive-only), not an accident: Stream discipline: product output goes to stdout, only environmental noise goes to stderr β€” and in --json modes, progress moves to stderr so stdout stays parseable.

The MCP oracle

nika mcp serves the same truths over the Model Context Protocol (stdio, read-only): validate (nika_check β€” a dirty workflow returns isError: true, mirroring the CLI’s exit 2) and learn (nika_schema Β· nika_examples Β· nika_template Β· nika_canon Β· nika_catalog Β· nika_tools Β· nika_explain). Same owning builders as the CLI payloads β€” the two lanes cannot drift apart by construction.

The evolution rules

  • Versioned: breaking a payload shape means bumping its envelope field β€” consumers pin on it.
  • Additive-only within a version: new fields appear, existing ones keep their meaning.
  • Deterministic: stable key ordering, no timestamps injected into otherwise-stable payloads β€” machine output is cache- and diff-friendly.
  • Presence, never values: no secret VALUE crosses any wire, human or machine. Requirements name the env var; doctor reports set/unset.
Next on this page once the next engine tag ships: nika welcome --deep --json (context_version) β€” the whole workspace truth in one call (file map with per-file verdicts Β· run inventory with actual cost Β· environment snapshot Β· wiring state Β· caps always reported, relative paths only). It is merged on main today and rides the next release.