AGPL-3.0-or-later · forever.

the standard library

nika:compose

Statically check a Nika workflow draft you wrote · returns the full `nika check` verdict as JSON (conformance + secret-flow + permits + the termination/cost certificate) · NEVER executes it. Iterate until valid, then deliver the draft. Agent loops only. One of 28 builtins in the closed nika: namespace.

the introspection familythe workflow looking at itself

  • introspectionfamily2 tools
  • 1argsdeclared contract
  • 1requiredcheck teaches a miss
  • craftedusage filecheck-green below

the contract

1 args · 1 required

A missing required arg is a nika check finding before anything runs; the vocabulary below comes from the binary itself (nika catalog --tools --json), not from prose.

workflow_yaml*
stringthe complete workflow YAML draft

in a real file

a complete workflow
compose.nika.yaml
nika: v1workflow:  id: delegate-a-sub-run  description: "the agent drafts a sub-workflow and spawns it through its one doorway"model: ollama/qwen3.5:4bpermits:  exec: false  tools: ["nika:compose", "nika:done", "nika:read"]tasks:  build:    agent:      system: "Draft a minimal workflow for the goal, spawn it via nika:compose, call nika:done with its outputs."      prompt: "Summarize ./notes.md into three bullet points."      skills:        - "./skills/summarizer/SKILL.md"      tools:        - "nika:compose"        - "nika:read"        - "nika:done"      max_turns: 8      max_tokens_total: 40000outputs:  result: ${{ tasks.build.output }}

a complete file, nika check green; the drift gate re-validates this copy against the schema on every test run. open it in the playground →

cross-references

ships in skeletons

no skeleton ships it; the crafted file above is the reference.

the check gates

the introspection family

2 tools

the workflow looking at itself.

Machines read the same vocabulary at /tools/catalog.json; the contract lives in spec 06 · stdlib. Install and ask the binary itself: nika catalog --tools. Read the spec →