{ "$schema": "https://opencode.ai/config.json", "agent": { "build": { "mode": "primary", "model": "opencode/kimi-k2.5", "prompt": "{file:./.opencode/prompts/build.txt}", "permission": { "edit": "allow", "bash": { "*": "ask", "npm run *": "allow", "npx vitest *": "allow", "npx tsc *": "allow", "git status": "allow", "git diff *": "allow", "git log *": "allow", "git add *": "ask", "git commit *": "ask", "git push *": "ask" } } }, "plan": { "mode": "primary", "model": "opencode/kimi-k2.5", "temperature": 0.1, "prompt": "{file:./.opencode/prompts/plan.txt}", "permission": { "edit": "deny", "bash": "deny" } }, "orchestrator": { "description": "Coordinates work across all Pulse modules. Plans tasks, delegates to module agents, owns no business logic.", "mode": "subagent", "model": "opencode/kimi-k2.5", "temperature": 0.1, "prompt": "{file:./.opencode/prompts/orchestrator.txt}", "permission": { "edit": "deny", "bash": "deny", "task": { "*": "allow" } } }, "fetcher-agent": { "description": "Implements and maintains the fetcher module (modules/fetcher/). Handles HTTP fetching of RSS and Atom feeds.", "mode": "subagent", "model": "opencode/kimi-k2.5", "temperature": 0.2, "prompt": "{file:./.opencode/prompts/fetcher.txt}", "permission": { "edit": { "modules/fetcher/**": "allow", "interfaces/**": "ask", "**": "deny" }, "bash": { "npx vitest run modules/fetcher*": "allow", "npx tsc --noEmit": "allow", "*": "deny" } } }, "parser-agent": { "description": "Implements and maintains the parser module (modules/parser/). Converts raw XML/Atom into FeedItem structs.", "mode": "subagent", "model": "opencode/kimi-k2.5", "temperature": 0.2, "prompt": "{file:./.opencode/prompts/parser.txt}", "permission": { "edit": { "modules/parser/**": "allow", "interfaces/**": "ask", "**": "deny" }, "bash": { "npx vitest run modules/parser*": "allow", "npx tsc --noEmit": "allow", "*": "deny" } } }, "dedup-agent": { "description": "Implements and maintains the deduplication module (modules/dedup/). Filters already-seen feed items.", "mode": "subagent", "model": "opencode/kimi-k2.5", "temperature": 0.2, "prompt": "{file:./.opencode/prompts/dedup.txt}", "permission": { "edit": { "modules/dedup/**": "allow", "interfaces/**": "ask", "**": "deny" }, "bash": { "npx vitest run modules/dedup*": "allow", "npx tsc --noEmit": "allow", "*": "deny" } } }, "storage-agent": { "description": "Implements and maintains the storage module (modules/storage/). Persists FeedItems to SQLite.", "mode": "subagent", "model": "opencode/kimi-k2.5", "temperature": 0.2, "prompt": "{file:./.opencode/prompts/storage.txt}", "permission": { "edit": { "modules/storage/**": "allow", "interfaces/**": "ask", "**": "deny" }, "bash": { "npx vitest run modules/storage*": "allow", "npx tsc --noEmit": "allow", "*": "deny" } } }, "formatter-agent": { "description": "Implements and maintains the formatter module (modules/formatter/). Renders FeedItems to terminal, HTML, or JSON.", "mode": "subagent", "model": "opencode/kimi-k2.5", "temperature": 0.2, "prompt": "{file:./.opencode/prompts/formatter.txt}", "permission": { "edit": { "modules/formatter/**": "allow", "interfaces/**": "ask", "**": "deny" }, "bash": { "npx vitest run modules/formatter*": "allow", "npx tsc --noEmit": "allow", "*": "deny" } } }, "reviewer": { "description": "Reviews code for quality, correctness, and interface compliance. Read-only.", "mode": "subagent", "model": "opencode/claude-sonnet-4-6", "temperature": 0.1, "prompt": "{file:./.opencode/prompts/reviewer.txt}", "color": "accent", "permission": { "edit": "deny", "bash": { "npx tsc --noEmit": "allow", "npx vitest run": "allow", "git diff *": "allow", "*": "deny" } } } } }