Document the agentd spec format in Omni/Agentd/SPEC.md.
Markdown with YAML frontmatter. Body is the task passed to agent.
---
toolchain: haskell
workspace: ./src
model: claude-sonnet-4
provider: claude-code
max_cost_cents: 100
max_iterations: 50
---
The task goes here.
| Field | Type | Required | Default | Description | |-------|------|----------|---------|-------------| | toolchain | string | yes | - | OCI image: base, git, haskell | | workspace | string | yes | - | Host path to mount at /workspace (writable) | | model | string | no | claude-sonnet-4 | Model to use | | provider | string | no | claude-code | Auth provider | | max_cost_cents | int | no | 100 | Cost limit | | max_iterations | int | no | 50 | Iteration limit |
Note: No skills field. Skills are just files the agent reads on demand.
agentd automatically mounts:
<workspace> → /workspace (rw)<repo-root> → /repo (ro) - for AGENTS.md, skills, etc.~/.config/agent/ → /root/.config/agent/ (ro) - authEverything after the frontmatter closing --- is the task.
If stdin is provided, it's appended to the task:
<task body>
---
Input:
<stdin content>
The agent reads /repo/AGENTS.md which contains the skill index. It can then read any skill file via read_file (e.g., /repo/Omni/Ide/Coder.md).
No special skill injection - the agent decides what to load.
Omni/Agentd/SPEC.md - Full specificationOmni/Agentd/Examples/