BusDK Update

Bus Workers now run both Claude and Codex engines

Bus-managed workers now run on two AI engine families. Worker templates cover Anthropic's Claude models — Fable 5, Opus 4.8, Sonnet 5, and Haiku 4.5 — alongside OpenAI Codex profiles from GPT-5.5 down to the near-instant Codex 5.3 Spark, and a worker picks its engine simply by naming a template.

The choice matters because BusDK is built to be operated by AI agents across the whole stack: the same worker surface that implements modules also reviews changes, triages logs, runs research, and coordinates other workers. Different roles want different engines, and that is now ordinary configuration rather than a special case.

2026-07-06bus workersClaudeCodex

In brief

TL;DR

  • bus workers template list ships eight ready worker identities: four Claude templates (Fable 5, Opus 4.8, Sonnet 5, Haiku 4.5) and four Codex templates (5.5, 5.5 High, 5.4 Mini, 5.3 Spark). Creating a worker from a template fixes its engine, default model, sandbox, and capability tags.
  • Each engine connects through its own integration: Claude sessions run behind bus.claude.session.* events, and the Codex engine runs through Codex App Server. Everything above them — tasks, messages, status, worktrees — uses the same engine-agnostic bus workers commands.
  • Worker messaging is asynchronous. A turn is delivered as an event and runs on the worker's own session, so a multi-hour Fable 5 research turn and a seconds-long Codex 5.3 Spark edit coexist on the same bus.
  • Goal objectives (--app-server-goal-objective) run on Codex App Server workers today. Claude workers do not execute goals yet; drive them with task assignments and messages while Claude goal support is under development.

A worker template is a durable identity default: it names the engine profile, default model, runner, sandbox mode, capability tags, and the worker's home repository, so creating a worker with bus workers create --template <template-ref> comes down to one decision — which template fits the job. The current catalog looks like this (columns trimmed for width):

$ bus workers template list
claude-fable-5    Claude Fable 5    Highest-capability Claude worker for long-running agents, …
claude-haiku-4-5  Claude Haiku 4.5  Fast Claude worker for cheap parallel extraction, …
claude-opus-4-8   Claude Opus 4.8   Strong Claude worker for complex agentic coding, …
claude-sonnet-5   Claude Sonnet 5   Balanced Claude worker for coding, planning, …
codex-53-spark    Codex 5.3 Spark   Near-instant Codex worker for small focused edits, …
codex-54-mini     Codex 5.4 Mini    Fast Codex worker for lighter implementation, …
codex-55          Codex 5.5         Default Codex worker for complex coding, debugging, …
codex-55-high     Codex 5.5 High    High-effort Codex worker for difficult root-cause analysis, …

The full listing also names each template's default model — claude-fable-5 through claude-haiku-4-5 on the Claude side, gpt-5.5, gpt-5.4-mini, and gpt-5.3-codex-spark on the Codex side — plus the runner provider (claude-appserver or codex-appserver), the workspace-write sandbox, and the capability tags the worker advertises. bus workers template show <template-ref> prints one template with its full role description; Fable 5, for example, is described as the deep-research lead that synthesizes final findings, can guide Haiku extraction and Sonnet follow-through, and expects multi-hour reasoning turns.

Engine choice stays out of the rest of the platform. Assigning tasks, sending messages, reading status and logs, and preparing Git worktrees all go through the same bus workers command surface whatever the engine. Underneath, each engine has one integration module with its own event scope: bus-integration-claude owns persistent Claude sessions and answers bus.claude.session.* requests — create, message, interrupt, status, stop — while streaming engine activity as bus.claude.session.event notifications. The Codex engine runs through Codex App Server behind the matching codex-appserver runner. Supporting a further engine means adding one integration module on the bus; the worker surface above it does not change.

Messaging is asynchronous by design. bus workers message <worker-id> --text "…" delivers the prompt to the worker's session and returns; the turn runs on the engine, and the reply lands on the worker's message thread where bus workers messages <worker-id> picks it up. No caller holds a connection open while a turn runs, which is what makes the slow end of the catalog practical: a Fable 5 worker can reason for hours over an architecture review while Spark workers answer small edits in seconds, and both report back through the same thread and bus workers status.

One capability is still engine-specific. A standing goal — set with --app-server-goal-objective when creating or messaging a worker — runs on Codex App Server workers today. Claude workers do not execute goal objectives yet, so goal-driven roles belong on Codex templates for now, and Claude workers are driven with task assignments and messages; goal support for the Claude engine is under development.

Each role can now run on the engine that suits it, on one bus, under one command surface — which is exactly what a platform operated by AI agents across the whole stack needs. The wider module documentation lives at docs.busdk.com.