AGPL-3.0-or-later · forever.

the language

max_turns

the agent’s loop bound; the worst case is finite. One of 59 words the served contract declares, projected from workflow.schema.json, the same file your editor validates against.

  • 1surfaceagent
  • optionaleverywherea choice, never a miss
  • integer | stringtypethe declared shape
  • 1skeletonscarry 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.

agent
integer | stringthe agent’s loop bound; the worst case is finiteinside agent:

in a real file

from the agent-loop skeleton
agent-loop.nika.yaml
  execute:    with:      steps: ${{ tasks.plan.output.steps }}    agent:      # The done-contract belongs IN the prompt: the final message must      # carry the schema'd shape, so SAY so — a live model that is not      # told finishes in prose and fails NIKA-INFER-002 (proven on GPT).      system: "Work the plan step by step. When finished, reply with ONLY your final result as an object carrying a `findings` array (one short string each), then call nika:done."   # SLOT      prompt: "Plan · ${{ with.steps }}"      tools:                        # SLOT: the MINIMUM grant for the job        - "nika:read"        - "nika:done"      max_turns: 15                 # SLOT: the loop bound      max_tokens_total: 80000       # SLOT: the spend bound      schema:                       # SLOT: the typed final-message contract        type: object        required: [findings]        properties:          findings: { type: array, items: { type: string } }

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

cross-references

skeletons that carry it

the check gates that name it

accepted by

defined by

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 →