← back to selected work

selected work · 2026

Switchyard

One typed API across every agent runtime — Claude, Codex, OpenCode, browser/search agents, custom HTTP runtimes.

summary

  • Defines one typed contract for agent runs, events, artifacts, debates, and approvals across mixed runtimes.
  • Lets apps route work across Claude, Codex, OpenCode, browser agents, and private HTTP runtimes by policy.
  • Separates runtime placement from product code so teams can choose local, hosted, or hybrid execution per task.
  • Collects approval gates and event streams in one layer, making cross-provider automation easier to observe.

problem

  • Multi-agent products collect provider-specific SDKs until routing, auth, events, and approvals become tangled.
  • Changing from one runtime to another becomes a rewrite because each backend exposes a different lifecycle.
  • Destructive actions need one approval story, not separate commit, push, web, and spend controls per tool.

approach

  • Protocol-neutral Run, Debate, Event, and Artifact types form the contract every adapter must satisfy.
  • Runtime adapters translate local processes, HTTP services, and ACP traffic into the shared event model.
  • Placement policy chooses runtime, locality, and budget path while approval gates guard risky actions.

outcome

  • Apps integrate once and move work between runtimes through configuration, tenant policy, or task type.
  • Operators can trace lifecycle events across providers instead of comparing unrelated logs after failure.
  • Teams keep runtime optionality without giving up approval control, budget visibility, or debugging context.

stack

TypeScriptNode.jsHTTPACPJWTEvent SourcingMonorepo