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.- Full screen
- Plain lines
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.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.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 fromnika {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
/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 The run is
/proof:UNSEALED because this machine has no run-signing key;
NIKA_KEYCHAIN=off nika key init once makes later runs SEALED
(Seal your runs).Save and Run stay separate
yeswrites 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 itruns 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’snika.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./proofshows what the trace records (chain, seal, boundary, written files) and what it does not prove./detailsshows how the last workflow was built: the author and model, calls, tokens and time.- Outside the Session,
nika trace verifyre-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.