.nika workflow you keep. Before anything runs, its check
shows what the workflow will do, which models and tools it uses, what it may
touch and what it can cost, without calling a model. You run it when you
decide, with the model you choose, local or cloud, and every run leaves a
tamper-evident record you can verify. One open-source binary: no Nika account
and no hosted service.
Audit first, then run. A meeting-notes job you would otherwise redo in a chat, kept as one .nika file: nika check audits it before any model is called, then a local model (ollama/llama3.2:3b) turns a sample transcript into typed action items and the run leaves a hash-chained record. Captured from the real CLI, on one machine, with no API key: the check on nika 0.121.0, the local-model run on nika 0.109.2. The file is a shorter demo version of the meeting actions example.
Your first result
Install the CLI, then work in an empty directory. This example calculates a total and writesreport.md using
built-in tools. It needs no model, API key, account or network connection.
Save this as report.nika:
report.md. The
with: binding makes save wait for summarize; permits: names the
allowed tools and output file.
The run prints a trace path under .nika/traces/. nika trace verify reads
the latest one (pass a path to pick another) and checks the record’s
integrity. A fresh machine without a signing key reports UNSEALED, even
when the hash chain is intact: run NIKA_KEYCHAIN=off nika key init once and
later runs report SEALED (Seal your runs). A
successful verification does not establish that a model’s answer is correct.
See traces for the evidence tiers.
Continue with offline examples for known inputs and
exact expected outputs, the terminal Session to
describe a job in your own words, or the
TypeScript quickstart to run workflows from an
application. The SDK starts its bundled engine directly; no server is needed.
A real job, when you are ready
Meeting actions turns a transcript into typed, tracker-ready action items. It defaults to a local model (ollama/qwen3.5:4b, no provider key, your own compute); point it at a
cloud provider and nika check prices the run before anything executes.
nika try meeting-actions rehearses it on the mock model, with no key and no
model call, and the page lists what a real run needs. Same file shape as
above; the model and tools change, the lifecycle does not.
What just happened, one concept at a time
- The file is the contract. The verbs
infer,exec,invokeandagent— nothing else: fetching a URL or writing a file is a tool underinvoke, declared and auditable. - Admission before execution.
nika runaudits the file before anything executes; a refused file never starts.nika checkis the same audit on its own, for CI. - Permits are the blast radius.
permits: {}declares zero authority. A workflow that touches a file, a host or a shell must say so, or admission refuses it (NIKA-SEC-004; with nopermits:block at all,NIKA-AUTH-006). - Runs leave evidence. Each run writes a hash-chained trace under
.nika/traces/;nika trace verifyinspects the record and reports whether it is sealed. Verification proves the record was not tampered with — not that a model was right.
Ask the file three questions
What changes if a required input is missing?
What changes if a required input is missing?
required: true with no default:, the run refuses
to start: the CLI exits 3 naming the missing key (NIKA-1708), and the
SDK’s run() throws NikaOperationError. Nothing is half-executed; a red
admission never becomes a run.What changes if a permission is absent?
What changes if a permission is absent?
permits: block
means zero authority — effects stay refused until the file declares
them (NIKA-AUTH-006). nika check --infer-permits drafts the
tightest block for you.What changes if I switch the model?
What changes if I switch the model?
mock/echo rehearses with no key and no model call (tools and
fetches stay real), ollama/llama3.2:3b runs locally, and cloud providers
take their environment key. The file, the
check and the record keep the same shape; nika check re-prices the run
for the new model, and asks for a larger max_tokens when a reasoning
model needs room to think.Where next
SDK quickstart
First workflow
Examples · real jobs
nika check, and
each page lists what it needs to run.Providers
The Nika ecosystem
Documentation
Language spec
Engine source
TypeScript SDK
Editor extension
nika lsp and the JSON Schema.Homebrew tap
brew install supernovae-st/tap/nika for the latest tagged CLI release.