Skip to main content
Run nika with no arguments in a terminal and the Session opens. You describe an outcome in plain words; Nika turns it into a .nika workflow file, shows you what it will do and what it may touch, and waits. Saving and running are two separate decisions, and every run leaves a record you can inspect.

Open it

Start the Session from the folder you want to work in. That folder is the project root: Nika works only under it, reads the files your request names there, and proposes new files inside it.
The terminal workspace: project, workflow inspection and conversation in one screen. F6 moves between regions, Esc returns to the message box, Alt+Enter breaks a line and Ctrl+T switches between the full screen and the inline view. Ctrl+C stops a preparation in progress; pressed twice, it leaves the Session, like /quit.
When its input or output is not a terminal (a pipe, a redirect, CI), bare nika prints the welcome mirror and opens no Session. /help lists the commands and /quit closes the Session.

Choose an intelligence

Nika needs a model to write a workflow its deterministic compiler cannot settle, or to answer a question in words. You choose it; Nika never picks a provider for you and never swaps your choice silently. The full-screen view shows an Intelligence panel with three seats:
  • Author writes and repairs your workflows.
  • Decision optionally judges the author’s candidates; by default the author decides alone.
  • Run is the model of the workflow’s own AI steps, set by each workflow.
Other choice… lists every connection this binary can use: API providers (with your key in the environment), agent apps you are signed into, and local engines such as Ollama, llama.cpp, LM Studio, LocalAI and vLLM. /intelligence changes the choice later and /status shows the project root, the chosen intelligence and where your context goes. Nika keeps the choice in ~/.nika/session-intelligence.json.
On a machine with no choice recorded yet, the full-screen view asks for an intelligence before it reads your first message, and keeps that message until you choose. The plain view (nika --plain) asks only when a request needs a model, so the walkthrough below runs there without any key.
Provider keys come from your environment: Nika has no store for them. Export the one you use from your shell startup file, for example export DEEPSEEK_API_KEY='…', and open a new terminal. nika doctor names the variable each provider reads. Local inference is unpriced, not free: Nika does not meter your machine’s computation.

Walkthrough: filter a CSV, no key needed

This request needs no model at all: the deterministic compiler settles it, and the workflow it writes computes its result without a model. Every line below was captured from nika {STATUS.version} in the plain view, on a machine with no key and no local model.
1

Make a folder with a small file

2

Describe the job

Nika proposes a new file and shows what it will do. Nothing has run:
/show prints the proposal’s exact bytes; the filter is an ordinary jq expression you can read and change. /meaning maps your request clause by clause. A sentence that is neither yes, no nor a question is read as a change, for example write the paid rows to ./out/confirmed.csv instead; the revised proposal needs its own yes. no discards it.
3

Save it

Type yes. Nika writes exactly the reviewed bytes, checks the file on disk, and stops:
4

Run it once

Type run it:
out/paid.csv holds the header and the two paid rows:
5

Read what the record proves

Type /proof:
The run is UNSEALED because this machine has no run-signing key; NIKA_KEYCHAIN=off nika key init once makes later runs SEALED (Seal your runs).
With the same Nika version, request and input file, this path gives the same workflow and the same output bytes. The same compiler works without the Session:
Ask for more, such as the paid rows plus their total in a second file, and the deterministic compiler no longer settles the request alone: Nika asks for an intelligence and writes the workflow with it. Review that proposal the same way. Before Nika proposes a workflow a model wrote, a verifier (your decision model, or else the author) compares it with your whole request, and Nika proposes nothing it has not accepted.

Save and Run stay separate

  • yes writes only the reviewed bytes and checks them. Saving never runs a workflow.
  • save & run, while a proposal waits, saves it and then runs it once; the two keep separate outcomes.
  • run it runs the saved workflow once, only when the file on disk checks clean. Name a file and a ceiling to choose: run paid-orders.nika with a ceiling of 0.05.
  • The ceiling is announced before the run starts: the amount you state, otherwise ceiling: in the project’s nika.yaml, otherwise USD 0.25. It bounds the run’s metered spend at catalog prices; it does not cover authoring and it is not an invoice.
  • A required input without a default is asked for before the run. A run that pauses at an approval step shows that step’s question, and your answer resumes the same run. Nothing answers for you.

Inspect the result

After a run, the Session lists what it produced and read, the model usage it recorded and the path of its trace.
  • /proof shows what the trace records (chain, seal, boundary, written files) and what it does not prove.
  • /details shows how the last workflow was built: the author and model, calls, tokens and time.
  • Outside the Session, nika trace verify re-checks the latest trace.
Traces and history can contain the data a workflow read. Keep them out of version control unless you intend to publish them.

Close and come back

/quit (or /exit) closes the Session. A proposal still waiting for your answer is kept: the next nika in the same folder offers /restore, which shows the original request and proposes the kept draft again, checked against the project as it is now. Restoring calls no model and writes nothing until you type yes. Earlier approvals and spending ceilings do not carry over.

Limits

A clean check describes a file’s structure and boundary; it does not prove that the workflow does what you meant or that a model’s output is true. Some requests cannot be expressed yet: Nika then says what stopped it and writes nothing. Known limits in 0.123 covers rehearsals on a copy, authoring time with large models, and the terminal’s mix of English and French lines.

Next

Your first workflow

Write a .nika file by hand and learn each line.

Local models

Give the Session and your workflows a model on this machine.

Harness access

Use an agent app you are already signed into.

Traces

What a run record proves, and what it does not.