Skip to content

feat(agents): add OpenCode as a first-class ACP runtime #2368

Description

@leesalminen

Summary

Buzz Desktop's managed agent runtime catalog supports Goose, Claude Code, Codex, and Buzz Agent, but OpenCode is missing even though it already speaks ACP natively over stdio:

opencode acp

Users who want OpenCode-backed agents must configure a custom harness command instead of selecting OpenCode from Agent runtimes.

Why

  • OpenCode ships a stable ACP server (opencode acp) — no separate *-acp npm adapter is required (same class of integration as Goose's goose acp / Grok's native ACP path).
  • Install path is well-known (curl -fsSL https://opencode.ai/install | bash, binary under ~/.opencode/bin or ~/.local/bin).
  • Without catalog registration, Desktop cannot discover, install-hint, or process-sweep OpenCode the way it does other runtimes.
  • OpenCode's provider-agnostic model catalog (Anthropic, OpenAI, OpenRouter, local Ollama/vLLM endpoints) surfaces through the existing ACP configOptions model discovery with no extra work.

Proposed solution

Register OpenCode in KNOWN_ACP_RUNTIMES with:

Field Value
id opencode
label OpenCode
commands opencode
Default args acp
PATH discovery include ~/.opencode/bin
Config surface ~/.config/opencode/opencode.json (model, provider, MCP servers)
Auth hint opencode auth login

Also wire the config bridge (model/provider/MCP from opencode.json), buzz-acp default-arg normalization, docs (buzz-acp README / TESTING), and unit tests.

Acceptance criteria

  • OpenCode appears under Desktop → Agent runtimes when opencode is on PATH
  • Creating/starting a managed agent with runtime=OpenCode spawns opencode acp via buzz-acp
  • buzz-acp models with BUZZ_ACP_AGENT_COMMAND=opencode completes an ACP handshake and lists models
  • Config surface reads model/provider/MCP servers from ~/.config/opencode/opencode.json
  • Docs describe the OpenCode path alongside Goose/Claude/Codex

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions