Skip to content

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

jsonc
{
  // ── 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": "Coordinate `/start-work` execution carefully: delegate each plan task to Shuttle, verify the result, and keep plan/todo progress precise. 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 and report results back to Tapestry."
    },
    "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.

Delegation Flow

In a typical workflow, Loom is the primary orchestrator. When you run /start-work, Tapestry coordinates plan execution by delegating plan tasks to Shuttle and then verifying Shuttle's results before moving to the next step. Categories help Loom choose the right Shuttle variant for the task, while agent prompts and skills refine how each handoff is executed.

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 CaseMechanism
Add instructions to a specific agentprompt_append on agents.<name>
Inject reusable domain knowledgeSkills (.opencode/skills/)
Optimize models per domainCategories
Change which LLM an agent usesagents.<name>.model
Rename an agent in the UIagents.<name>.display_name
Restrict what tools an agent can useagents.<name>.tools
Replace an agent's entire promptagents.<name>.prompt (use sparingly)
Add a new specialist agentcustom_agents
Add a parallel reviewer with a different modelcustom_agents + Loom prompt_append
Remove an agent from the systemdisabled_agents or agents.<name>.disable
Turn off a governance hookdisabled_hooks
Disable session analyticsdisabled_hooks: ["analytics"]
Tune recovery vs idle continuation behaviorcontinuation
Exclude a specific skilldisabled_skills
Reshape the entire workflowWorkflow Customization

Released under the MIT License.