nika.yaml is the control plane — optional
for a first workflow, required once the project arms beats or sets policy.
Each *.nika file is executable workflow intent.
Recommended layout
PROJECT TREE · CONTROL PLANE + INTENT + PROOF
nika.yamlgoverns project-wide spend and the released reader profile this project uses.workflows/is reviewed as intent.src/nika.tsowns binary resolution and the working directory, not a second copy of project policy..nika/is runtime state. Ignore it in source control and mount it deliberately on a server.
Found the project
--project-file is the scripted door to the starter. It skips an existing
file unless --force is explicit. Bare nika arm reads and validates the
project and cadence grammar, reports what is armed, and schedules nothing.
The starter is optional and comments every governing example. Start with the
common rung that the released reader accepts — the same identity
nika init --project-file writes:
arm: when time or an event should start a workflow. Add traces: or
registry: for direct-run policy. The current cadence path does not compose
those two profiles yet, so the dedicated project file
and arm registry pages show valid copy-paste forms
for each lane.
Create one client
fileURLToPath decodes percent-escapes and survives spaces in the path —
new URL(...).pathname does neither.
Binary resolution follows one ladder:
binpassed to the constructorNIKA_BIN- exact optional platform package
PATH
lookup is refused. cwd anchors relative workflow paths,
project-file discovery and the .nika/ state directory.
Probe at startup
check() resolves to a report so the caller can show
every finding — branch on report.clean, never log readiness while it is
false.
Keep receipts governed
.gitignore
Connect the next systems
Security boundary
Keep permits, secrets, argv and spend ceilings explicit.
Local client
Read every local method and its machine twin.
Workflow concepts
The file remains the language contract.
Traces
Understand the durable journal under the SDK receipt.
Resident server
Keep armed beats running on a container, VM or bare server.
Runtime state
Persist traces and arming ledgers without committing them.