Full Configuration Example
This page shows a complete, annotated configuration that uses all of Weave's customization mechanisms together. Use it as a reference when building your own config.
Complete Config
{
// ── Domain-Specific Configurations for Shuttle ─────────────────
// Categories define named variants for different technical domains.
// Loom dynamically learns about these and routes work accordingly.
"categories": {
"backend": {
"description": "Python FastAPI backend",
"model": "anthropic/claude-opus-4",
"temperature": 0.1,
"prompt_append": "Use async/await. Include docstrings."
},
"frontend": {
"description": "React TypeScript UI",
"model": "openai/gpt-5",
"temperature": 0.2,
"prompt_append": "Use React 18+ hooks. Test accessibility."
}
},
// ── Per-Agent Customization ─────────────────────────────────────
// Configure each agent independently. All fields are optional —
// unset fields fall back to the agent's built-in defaults.
"agents": {
"loom": {
"display_name": "Tech Lead",
"model": "anthropic/claude-opus-4",
"temperature": 0.1,
"prompt_append": "When reviewing security-sensitive changes, delegate to BOTH Warp AND Security (GPT)."
},
"tapestry": {
"temperature": 0.0,
"prompt_append": "Format all todos: [N/M: task]. Use checkmarks for complete.",
"skills": ["tdd"]
},
"shuttle": {
"display_name": "Senior Dev",
"skills": ["company-standards", "testing"],
"prompt_append": "Always verify before marking complete."
},
"pattern": {
"model": "anthropic/claude-opus-4",
"skills": ["planning-guidelines"],
"prompt_append": "Create detailed acceptance criteria."
},
"thread": {
"model": "anthropic/claude-3-haiku" // Cheaper model for read-only work
}
},
// ── Custom Agents ───────────────────────────────────────────────
// Define your own agents. They appear alongside built-ins in Loom's
// delegation table and follow the same model resolution chain.
"custom_agents": {
"security-gpt": {
"display_name": "Security (GPT)",
"description": "Independent security review using a second model",
"model": "openai/gpt-5",
"category": "advisor",
"cost": "EXPENSIVE",
"prompt": "You are a security auditor. Review code for OWASP Top 10 vulnerabilities. Produce a clear APPROVE or REJECT verdict.",
"tools": { "write": false, "edit": false, "bash": false },
"triggers": [
{ "domain": "Security", "trigger": "Independent security review for cross-model coverage" }
]
},
"docs-writer": {
"display_name": "Docs Writer",
"description": "Technical documentation specialist",
"model": "anthropic/claude-sonnet-4",
"category": "utility",
"cost": "CHEAP",
"prompt_file": ".opencode/prompts/docs-writer.md",
"skills": ["writing-style"],
"triggers": [
{ "domain": "Documentation", "trigger": "README updates, API docs, user guides, changelog entries" }
]
}
},
// ── Selective Disabling ─────────────────────────────────────────
// Remove what you don't need. Arrays from user config and project
// config are merged (union), so you can split across both files.
"disabled_agents": [],
"disabled_tools": [],
"disabled_hooks": ["context-window-monitor"],
"disabled_skills": [],
// ── Continuation Behavior ────────────────────────────────────────
// Keep post-compaction recovery on, but keep generic idle nudges off.
"continuation": {
"recovery": {
"compaction": true
},
"idle": {
"enabled": false,
"work": false,
"workflow": false,
"todo_prompt": false
}
}
}Key Architectural Notes
All Customization is Additive
prompt_append appends, skills prepend, categories layer on top. Base prompts are never modified — your customizations build on them. The only exception is agents.<name>.prompt, which fully replaces the base prompt.
Config is Layered
User-level defaults (~/.config/opencode/weave-opencode.jsonc) + project-level overrides (.opencode/weave-opencode.jsonc) merge gracefully. Nested objects deep-merge, arrays union, scalars favor the project config.
Tapestry Cannot Spawn Subagents
Tapestry has one locked constraint: it cannot spawn subagents (task and call_weave_agent tools are permanently disabled). This enforces that Tapestry executes plans directly rather than re-delegating. This constraint cannot be overridden via config.
Skills are the Primary Extension Point
Skills are portable, reusable, and can be shared across teams or pulled from open-source repos. They're the recommended way to package domain knowledge for consistent reuse. See Skills.
Which Mechanism for Which Use Case
| Use Case | Mechanism |
|---|---|
| Add instructions to a specific agent | prompt_append on agents.<name> |
| Inject reusable domain knowledge | Skills (.opencode/skills/) |
| Optimize models per domain | Categories |
| Change which LLM an agent uses | agents.<name>.model |
| Rename an agent in the UI | agents.<name>.display_name |
| Restrict what tools an agent can use | agents.<name>.tools |
| Replace an agent's entire prompt | agents.<name>.prompt (use sparingly) |
| Add a new specialist agent | custom_agents |
| Add a parallel reviewer with a different model | custom_agents + Loom prompt_append |
| Remove an agent from the system | disabled_agents or agents.<name>.disable |
| Turn off a governance hook | disabled_hooks |
| Disable session analytics | disabled_hooks: ["analytics"] |
| Tune recovery vs idle continuation behavior | continuation |
| Exclude a specific skill | disabled_skills |
| Reshape the entire workflow | Workflow Customization |
