Skip to content
    ↑↓ select↵ openesc close
    English中文
    balatD
    @balatd/gorc

    A conductor agent plus a fleet of cheap subagents (research, reader, implementer, qa) for opencode. The conductor plans and delegates; the fleet does the grinding.

    GitHub stars

    1

    Monthly installs

    30

    6 in 7 days

    Composite scoreSCORE

    29.5

    Multi-signal model

    Last commit

    1 month ago

    2026-07-06

    Install and configure

    opencode.json

    Writes to this project's opencode.json — applies to this repository only.

    opencode.json

    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["@balatd/gorc@0.1.2"]
    }

    opencode loads npm dependencies through its embedded runtime on startup and caches them locally — no manual global install needed.

    gorc

    opencode MIT stars issues
    last commit bun TS PRs

    An opencode plugin that ships a conductor primary agent plus a fleet of cheap subagentsgo-research, go-reader, go-implementer, go-qa — and the orchestration logic to gate and observe delegations.

    The conductor plans, reasons, and delegates the grinding to budget models. You stay in the expensive model's context for the thinking; the fleet does the trawling, reading, and bulk editing.

    Install

    Published to npm as @balatd/gorc. opencode auto-installs it on startup:

    // opencode.jsonc
    {
      "$schema": "https://opencode.ai/config.json",
      "plugin": ["@balatd/gorc"]
    }
    

    To make the conductor your default agent:

    "plugin": [["@balatd/gorc", { "defaultAgent": "conductor" }]]
    

    The fleet

    Agent Mode Use for
    conductor primary Plans, reasons, delegates. The only agent that may call task.
    go-research subagent websearch + webfetch + read-only exploration of unfamiliar code.
    go-reader subagent Targeted reads of code whose location is already known.
    go-implementer subagent Applies planned edits and mechanical refactors across files.
    go-qa subagent Read-only testability check on what the implementer just wrote.

    The conductor's task permission is force-gated to the four subagents — it cannot delegate to anything else, even if you override the conductor in your own config.

    Models

    By default every agent targets the opencode-go provider:

    Agent Default model
    conductor opencode-go/glm-5.2
    go-research opencode-go/deepseek-v4-flash
    go-reader opencode-go/mimo-v2.5
    go-implementer opencode-go/deepseek-v4-pro
    go-qa opencode-go/deepseek-v4-flash

    If you don't have that provider, point the fleet at your own models via options — any field you omit keeps its default:

    "plugin": [[
      "@balatd/gorc",
      {
        "conductorModel": "anthropic/claude-sonnet-4-6",
        "researchModel": "anthropic/claude-haiku-4-5",
        "readerModel": "anthropic/claude-haiku-4-5",
        "implementerModel": "anthropic/claude-sonnet-4-6",
        "qaModel": "anthropic/claude-haiku-4-5",
        "defaultAgent": "conductor"
      }
    ]]
    

    Options

    Option Default Effect
    conductorModel opencode-go/glm-5.2 Model for the conductor.
    researchModel opencode-go/deepseek-v4-flash Model for go-research.
    readerModel opencode-go/mimo-v2.5 Model for go-reader.
    implementerModel opencode-go/deepseek-v4-pro Model for go-implementer.
    qaModel opencode-go/deepseek-v4-flash Model for go-qa.
    defaultAgent (unset) If set (e.g. "conductor") and you have no default_agent already, sets it.
    logDelegations true Log every task delegation to the opencode log stream.

    Overriding agents

    Anything you define under "agent" in your own config wins — the plugin only injects agents you haven't already defined. So to tweak a prompt or permission, define that agent yourself and the plugin leaves it alone (the conductor's task gating is still force-stamped, by design).

    The test command

    Ships a /test command that invokes go-qa on your most recently edited paths (or a path you pass it):

    /test src/foo.ts
    

    How it works

    A single opencode plugin (src/index.ts) uses the config(cfg) hook to inject the five agents and the test command into your merged config, reads each agent's prompt body from the bundled agents/*.md files at runtime, and force-stamps the conductor's task permission so the fleet boundary can't be widened by accident. A tool.execute.before hook logs every delegation.

    Develop

    bun install
    bun run build        # -> dist/index.js
    

    Test locally by pointing your config at the built file:

    "plugin": ["file:///Users/you/Projects/gorc/dist/index.js"]
    

    License

    MIT