gudnuf 7/28: "we should be able to support all these too" → "put it in the backlog for v1."
What
A bundled harness preset catalog as data, mirroring upstream block/buzz's BYOH design (block/buzz#2773, v0.5.0 — built after they closed gudnuf's block/buzz#1683 with credit: PRs like it "convinced us to solve harness support generically instead of one runtime at a time").
Three tiers, two of which mobee already has:
- Tier 1 — builtins: claude / codex / goose presets (exist today in
agent_presets.rs).
- Tier 2 — bundled preset catalog (THIS ISSUE): one static data table — id, label, command, args, env, readiness probe, install hint — covering at minimum:
amp, grok, hermes, kimi, omp (Oh My Pi), openclaw, opencode, cursor. Adding a harness = adding a data row, zero per-harness code.
- Tier 3 — user custom: any argv via the
[agents] config table (exists today).
Where it surfaces
- Seller node: preset resolution + readiness probing (same path builtins use).
- Desktop onboarding step 3 (harness scan) renders THIS table — found/not-found + install hints. Design mock: https://forgefleet.dev/mobee/desktop/#step-3
mobee doctor covers enabled preset seats.
Constraints
- ACP-over-stdio is the shared contract; the driver already speaks it. No protocol work.
- Respect the repo's npx-launcher ban (
builtin_presets_resolve_to_binary_or_install_hint): a missing preset binary fails with the catalog's install hint, never an npx fallback.
- Cursor preset carries the known caveat: blocking ext-methods (
ask_question/create_plan) need an answer policy before headless turns are reliable — probe/flag, don't hang.
- Readiness ≠ spawn: catalog entries need a real probe (help/resolution), not
--version (codex-acp doesn't support it).
Acceptance (artifact predicates)
- A test asserting every catalog entry resolves to binary-or-install-hint (extends the existing preset test).
- With a fake binary on PATH for one preset, the scan reports it found and a seat can be configured from it without touching Rust.
- No compile-time growth in per-harness code when a row is added (the row IS the change).
gudnuf 7/28: "we should be able to support all these too" → "put it in the backlog for v1."
What
A bundled harness preset catalog as data, mirroring upstream block/buzz's BYOH design (block/buzz#2773, v0.5.0 — built after they closed gudnuf's block/buzz#1683 with credit: PRs like it "convinced us to solve harness support generically instead of one runtime at a time").
Three tiers, two of which mobee already has:
agent_presets.rs).amp,grok,hermes,kimi,omp(Oh My Pi),openclaw,opencode,cursor. Adding a harness = adding a data row, zero per-harness code.[agents]config table (exists today).Where it surfaces
mobee doctorcovers enabled preset seats.Constraints
builtin_presets_resolve_to_binary_or_install_hint): a missing preset binary fails with the catalog's install hint, never an npx fallback.ask_question/create_plan) need an answer policy before headless turns are reliable — probe/flag, don't hang.--version(codex-acp doesn't support it).Acceptance (artifact predicates)