AGPL-3.0-or-later · forever.

runtime · durable proof

Let the interface disappear.

Keep a hash-chained run journal that can be verified, inspected and replayed after the live stream is gone.

A progress UI is disposable. A trace is the durable twin of the run, with the event order and chain integrity needed for review and replay.

Keep the trace identity.

The engine writes the receipt. Application code should store the path or run identity beside its own business record rather than copying event payloads into a second journal.

live stream ───────→ UI
     │
     └──→ .nika/traces/<run>.ndjson
                      │
                verify · show · replay

Check integrity before trust.

traceVerify returns intact, the chain head and the engine exit code. Verification does not call a provider and does not execute a task.

const receipt = await nika.traceVerify(tracePath)

auditLog.write({
  tracePath,
  intact: receipt.intact,
  chainHead: receipt.head,
})

Project history without rerunning work.

Use the CLI replay surface when an operator needs the original storyboard. The SDK stays focused on verification and leaves rendering to the engine.

nika trace show .nika/traces/<run>.ndjson
nika trace replay .nika/traces/<run>.ndjson