Worker bots + connect any vendor
Lead: Build two features over the whole vendor catalog (38 CLIs in cli-catalog.json). OpenCode becomes a normal vendor entry. Two code-only workers write it; I run one build, then ask you before merge, because a merge deploys.
What exists (reused, not rebuilt)
| Part | Where | Use || Vendor catalog, 38 CLIs | gizzi-code/.../cli-catalog.json | ok Source of "all vendors" || Install → sign in → connected, any device | allternit-ai CliConnectFlow + /cli-tools/:id/install + /providers/:id/connect | ok Becomes the chat card || Device-code sign-in when remote | provider_routes.rs login_argv (Codex, Grok only) | warn Hard-coded; move to catalog || Bot → bot handoff | bot_routing.rs message_agent + roster | ok Add "owns" || Create bot | agent_routes.rs create_agent_json | ok Call from a bot tool || OpenCode | catalog entry: no login, one "default" model; managed lane says adapter missing | no Fix as normal vendor |Feature 1: worker bots from chat
owns= list of task kinds (code, image, research, any free text).- Roster lists
owns; message_agent guidance says: hand owned work to the owner. - Bot profile shows and edits
owns.
Feature 2: connect any vendor from chat
- Works for every catalog vendor; the card picks the sign-in type from the catalog.
- Code and link come only from the CLI output. The link must match the vendor's domain.
- API keys go in the card's key field, never in chat text.
loginRemotefield in the catalog replaces the Codex/Grok match, for every CLI that has a device flow.
OpenCode as a vendor
- Catalog: real
login, real sign-in type, models fromopencode models. - Managed harness lane: OpenCode adapter on.
Who does what
| Worker | Repo | Scope || P | allternit (platform) | bot_create + owns + migration, vendor_connect tool, loginRemote, OpenCode entry + lane, docs || A | allternit-ai | chat card (Desktop, phone layout, PWA), owns on bot profile, tool row for bot_create || Me | both | one build + api smoke-boot + one live check, PRs, merge after your OK |