AGPL-3.0-or-later · forever.

the language

max_tokens

per-call output token cap. One of 62 words the served contract declares, projected from workflow.schema.json, the same file your editor validates against.

  • 1surfaceinfer
  • optionaleverywherea choice, never a miss
  • integer | stringtypethe declared shape
  • 6skeletonscarry this key

the contract

1 declaration

Descriptions are the schema's own; the deeper invariants (value languages and regexes) ride the same projection. A miss is a nika check finding before anything runs.

infer
integer | stringper-call output token capinside infer:

in a real file

from the chain skeleton
chain.nika.yaml
  think:    with:      gather: ${{ tasks.gather.output }}    infer:      max_tokens: 800               # SLOT: the spend ceiling · sized for the SEAT, not the answer      # SLOT: the one model job. Keep slot markers OUT of the block below —      # everything indented under `prompt: |` is prompt TEXT, so a stray      # `# SLOT:` line is sent to the model verbatim (visible in the mock      # echo). Comments belong out here, where YAML eats them.      prompt: |        Summarize the following in a short paragraph.        ${{ with.gather }}

a verbatim slice, real line numbers from chain.nika.yaml, conformance-gated upstream on every spec push. open the full skeleton →

the block it lives in

The whole grammar in one place: the four verbs · the standard library · the spec. Try it in the playground. Read the reference →