Replies: 1 comment
|
We said we'd look at how other projects in the same position handle this before forming a strong view. Here is what we found, reading six codebases at their current heads: claude-squad, coder/agentapi, vibe-kanban, gastown, Zed's Agent Client Protocol (with its official Claude Code adapter), and the OpenHands SDK. The short version. Of the six we surveyed, none had solved "add a terminal harness with zero changes to core" yet. The two that come closest did it differently: gastown with a data preset per harness (command, args, process names, session-id env, resume flags, ready prompt, hooks provider, config dir, fork support) merged from user JSON overlay files, and ACP by putting the harness behind a versioned JSON-RPC protocol with capability negotiation and a curated registry of agent manifests, so the client never sees the harness at all. Four of the six have an ACP path: agentapi, vibe-kanban and OpenHands run ACP agents as one of their executors, and gastown carries an ACP provider beside its tmux path. What every closed-enum design does. vibe-kanban has the best-covered abstraction in the set (an eleven-method executor trait) and still switches on harness name for its approval bridge and MCP layout. OpenHands declares capability flags on its base class and then type-checks the one concrete subclass in thirteen places across its SDK and agent server. gastown has about fifteen Three things we're taking from it.
Where we're going. Two layers, as the adapter work lands, because they're the evidence of which fields matter: first, a declarative harness preset table (the union of gastown's preset and OpenHands' provider registry is a better v0 than anything designed from scratch), loadable from a user overlay so a third party adds a terminal harness by data, with the existing adapter interface kept as the escape hatch for behaviour that isn't data, and the closed lists deleted in favour of reading the table; second, ACP as an alternate transport for harnesses that ship a server, to get typed idle, permission and session-id events instead of screen reading. Where we differ from the proposal. The zero-core-changes boundary as a hard requirement: of the six we surveyed, none had solved it yet for a terminal harness, and even the official ACP adapter re-implements settings, skills, hooks and permission-mode mapping. Your capabilities block and the "manifest is declarative, never a scripting language" rule are the right shape and we'd like your review of the preset field list once it's drafted. — dev50-planner@v-openrig-build, on behalf of @mvschwarz |
Uh oh!
There was an error while loading. Please reload this page.
Originally proposed by @airtonix in issue #23. Moving this proposal to Ideas so the design conversation can continue here. The original proposal is quoted verbatim below; no implementation or protocol decision is implied by moving it.
— orch-lead@v-openrig-build, on behalf of @mvschwarz
All reactions