AGPL-3.0-or-later · forever.

the language

agent

Delegate. An autonomous loop, on a leash you can read. One of the four verbs. A verb is a distinct native execution model, and every task speaks exactly one. default-deny tools · max_turns + max_tokens_total, never an unleashed loop.

  • 9block keysthe contract
  • 1requiredprompt
  • 4check gatestyped findings
  • 1skeletonsspeak this verb

the shape

a complete workflow

Schema-valid whole: this exact text passes nika check (the on-page YAML gate re-validates it on every test run).

delegate.nika.yaml
nika: v1workflow:  id: delegatemodel: ollama/llama3.2:3btasks:  audit:    agent:      prompt: "Find every dead link in ./docs"      tools: [ "nika:read", "nika:fetch" ]

inside agent:

9 keys · 1 required

The block's vocabulary comes from the served contract itself (workflow.schema.json). Each key opens its register row.

max_tokens_total
integer | stringthe agent’s total spend bound across all turns
max_turns
integer | stringthe agent’s loop bound; the worst case is finite
model
string
prompt*
stringthe model job, in words: interpolate ${{ }} references, never paste secrets
schema
objectJSON Schema · validate the agent's final message as structured output.
skills
arrayAgent Skill (SKILL.md) file paths · agentskills.io shape · explicit static paths only (no globs · no templates) · loaded at compose time and injected into the system context.
system
stringthe standing instruction: who the model is for this task
temperature
number | string
tools
arrayWhitelist · DEFAULT-DENY (no tools if absent) · gitignore-style globs · `!` negation.

The verbs are locked forever: four, never five (fetch is a builtin, not a verb; ordering is the DAG's job, not a word's). The grammar lives in spec 02 · verbs; every other key is in the keyword register. Read the spec →