ADR: Harness support for opencode
Maintainers usually reply within 1 day
@savitharaghunathan is already working on this.
Since Aug 12, 2026.
Assessment
This issue has not been assessed yet.
Description
Context
The harness today is coupled to goose in three places:
-
Lifecycle —
internal/goose/lifecycle.gostartsgoose serve, translates
LLM credentials to goose-specific env vars (GOOSE_PROVIDER,GOOSE_MODEL,
ANTHROPIC_API_KEY, etc.), and manages the process. -
Skill discovery — PR #136
symlinks.agents/skills→/opt/skillsso
goose's native skill platform finds mounted SkillCards. This path
(.agents/skills) is goose-specific. opencode uses a different convention. -
ACP protocol —
internal/acp/implements the ACP WebSocket protocol
(JSON-RPC over WS). goose implements ACP natively. opencode does not — it
would need an adapter or a different integration path.
ADR 0001 already anticipates multiple runtimes (layer 1.5 runtime images:
agent-base-goose, agent-base-opencode) and states that subagent delegation
is a runtime concern. But the harness has no abstraction for swapping runtimes.
Questions to resolve
-
Lifecycle interface: What does the harness need from a runtime? Start,
health check, stop, port. Should this be a Go interface the harness calls, or
a process convention (binary name, env vars, exit codes)? -
Skill delivery: goose scans
$HOME/.agents/skillsand<cwd>/.agents/skills.
What does opencode scan? Do we need per-runtime symlink targets, or is there a
shared convention (e.g., Agent Skills spec directories)? -
ACP compatibility: Does opencode support ACP? If not, what's the
integration path — ACP adapter sidecar, stdin/stdout, HTTP API? The harness
tee (ADR 0008) assumes ACP for live viewer streaming and HITL. -
Prompt assembly: The harness builds a single prompt from context layers
and sends it via ACP. If a runtime doesn't support ACP, how does the prompt
reach the agent? -
Rules (from #135):
type: ruleSkillCards need to be always-loaded in the
prompt regardless of runtime. The mechanism (env var likeKONVEYOR_RULES,
.goosehints, or runtime-agnostic config file) should work across runtimes. -
Provider credentials:
providerEnv()mapsKONVEYOR_LLM_*to
goose-specific env vars. opencode likely expects different var names. Should
this mapping live in the harness or in the runtime image?
Goose-specific surface area
| Area | Goose coupling | opencode equivalent |
|---|---|---|
goose serve |
Binary + CLI flags | ? |
GOOSE_PROVIDER / GOOSE_MODEL |
Env vars | ? |
| ACP WebSocket | Native support | ? |
.agents/skills/ |
Native skill discovery | ? |
.goose/ state dir |
gitignore'd | ? |
--with-builtin developer |
CLI flag | ? |
.goosehints |
Runtime-specific config | ? |
Expected output
An ADR documenting:
- The runtime abstraction boundary (what the harness expects vs. what the runtime provides)
- How skill delivery works across runtimes
- How ACP or an alternative protocol handles observability and HITL
- Whether provider credential mapping belongs in the harness or the image
- Dominant language
- Go
- Stars
- 5
- Forks
- 13
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 45
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from konveyor/agentic-controller
-
bug stream/controller
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
konveyor/agentic-controller#164 ·
Maintainers usually reply within 1 day
-
documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
konveyor/agentic-controller#124 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
konveyor/agentic-controller#341 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
konveyor/agentic-controller#323 ·
Maintainers usually reply within 1 day
-
Provider-aware Gateway verification for aws-bedrock / gcp-vertex-ai, so bad credentials fail at verify rather than mid-runPossibly taken @ibolton336 claimed this 5 days ago. Openenhancement stream/controller
konveyor/agentic-controller#304 · 1 assignee ·
Maintainers usually reply within 1 day
All issues in konveyor/agentic-controller
Similar issues
-
agent-butler-finding chore
Difficulty 1/5 Under an hour Newbie friendliness 88/100
jordansmall/spindrift#6695 ·
Maintainers usually reply within 1 day
-
skills-init: commit-SHA skill refs never start (git checkout -- <sha> reads the SHA as a pathspec)Open
Difficulty 1/5 Under an hour Newbie friendliness 84/100
kagent-dev/kagent#3571 ·
Maintainers usually reply within 1 day
-
book-layout.spec fails when the similar-books rail holds other projects' booksPossibly taken @praetorianer777 claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
praetorianer777/GoTome#373 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
-
/shutdown/ready can fail to return an HTTP response when readiness takes longer than the server write timeoutPossibly taken @floriankoch claimed this today. Opentriage
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
envoyproxy/gateway#10562 ·
Maintainers usually reply within 1 day