Agents live in your harness’s native format — a Markdown file per agent, with YAML frontmatter describing it and a body that is its system prompt. Karta discovers them; you don’t redeclare them anywhere else.Documentation Index
Fetch the complete documentation index at: https://docs.karta.sh/llms.txt
Use this file to discover all available pages before exploring further.
| Harness | Location |
|---|---|
| Claude Code | .claude/agents/*.md |
| OpenCode | .opencode/agents/*.md |
The format
.claude/agents/billing.md
Frontmatter fields
The agent’s identifier. This is the key you route to (
app.agents["…"],
agent="…").A short summary of what the agent does. Used for routing and display.
Optional model override for this agent (e.g.
claude-sonnet-4-6). Falls back
to the harness/platform default if omitted.Optional sampling temperature.
Optional map of tool name → enabled. Controls which tools this agent may use.
Optional permission rules — for example, allowing or denying specific skills.
primary or auxiliary. Primary agents can be routed to directly.Single vs. multiple agents
- One agent → it’s selected automatically;
app.default_agentis it. - Multiple agents → route explicitly by name, or set a default. For
OpenCode, the default is declared in
.opencode/opencode.jsoncas"default_agent": "name". For Claude Code, supplying multiple agents without a clear default is an error — name one as the entry point.
Handing off between agents
Routing chooses an agent per message; handoff changes the current agent for the rest of a session:Skills
Reusable capabilities agents can invoke.
Agents (concept)
Routing, handoff, and agents as principals.