Excalibur (xcb)
Install xcb
Theme
Appearance

AI subscription control plane

Run agents unattended on every subscription you pay for.

Excalibur (xcb) is a control plane for Codex and Claude Code subscriptions. Sign in once, then ask an agent to build any topology from its primitives: tasks routed by quota and health, coordinated through a backlog, scaled with load.

macOS

Terminal
curl -fsSL https://xcb.sh/install.sh | sh
Apple silicon

Free and open source · Latest release: v0.20.11

Use your quota before it resets

Each task goes to one account that can take it now, favoring unused quota that is about to reset.

Three tasks reach xcb. xcb sends each to one of four accounts. One Claude account reports a usage limit, so its task moves to a Codex account.t_parsert_docst_releasexcbroute
When an account reports a usage limit, its task moves to another account with its original instructions.
How routing works →

Ask an agent for any topology

There is no app or TUI. Sign in once, describe the setup you want, and the agent builds it from xcb’s primitives.

Your agentClaude Code, Codex,or your own appxcb primitivesxcb projectsxcb tasksxcb schedulesxcb routesxcb hooksbacklog · attentionYour accountsClaude and Codexsubscriptionscreatesquestions, resultsone task, one accountquota, limits
Agents coordinate through the backlog and the attention queue, so you check in instead of watching.
Projects, tasks, and schedules →

Interfaces

Two ways to use xcb

As your coding agent

Send work from the command line. xcb picks an account and model and prints the result.

xcb run -p "Fix the failing parser test"
Getting started →

Inside your agent or app

Hand a task to xcb as JSON and get the result back as JSON. With the TypeScript SDK, the app names the account and model.

# task.json sets "dryRun": true
{
  "version": 1,
  "status": "selected",
  "requestId": "route_…",
  "route": {
    "provider": "claude",
    "account": "a_…",
    "model": "claude/sonnet/low",
    "label": "Sonnet · low",
    "reason": "deterministic fallback · balanced task · Pareto P1 · quality 92"
  }
}
Dry run as documented in docs/route.md for v0.20.11, checked 2026-10-13.
Route tasks →

Built for weeks of unattended work

Hraness runs its own projects on xcb. The owner’s post of 12 October 2026 describes one month of it.

Subscriptions
30Codex, Claude, and other plans in one pool
Commits in a month
7,927an average of 264 a day
Lines changed
17.6Macross the projects in that month
Tokens in a month
190Bpeaking at 300M tokens an hour

Figures from A love letter to typing code by hand ↗, one month across Hraness’s own projects and accounts.

Continue your Claude and Codex conversations

Import conversations from the last 24 hours, then continue each one on an account that can take it.

xcb sessions discover
xcb sessions import --recent
Import conversations →

See what your agents used

The installer adds aicharts beside xcb, which keeps your token use by day, agent, provider, and model on this computer.

xcb usage
xcb usage report --csv
xcb usage connect
aicharts usage ↗

Install xcb

Install the latest release, connect your Claude account, and run a task.

  • macOS
  • Linux
  • Windowsproviders via WSL2
xcb setup claude
xcb run -p "Explain this repository"
Provider support and tested builds
Claude
Claude's coding workflow passed on macOS ARM64 with the tested account.
Codex
Codex CLI 0.159.0, 0.158.0, 0.157.1, and 0.156.1 pass xcb's sandbox and tool checks on macOS ARM64. A signed-in coding workflow passed on macOS ARM64 with Codex CLI 0.158.0.

On Linux, Claude needs the sandbox setup before your first task. On Windows, Claude runs in WSL2.

Supported builds and setup →

Questions

Can I use the subscriptions I already have?

Yes. You sign in to your own Claude and Codex accounts through each provider’s own tool, and xcb routes work among them. It has no model access of its own and does not lift provider usage limits; each provider’s pricing and terms still apply.

What happens when an account hits its limit?

When a provider reports an exhausted usage window, xcb skips that account and sends the next task to one that can take it. A managed task that stops on a reported limit moves to another account with its original instructions. If no account can take it, the task waits for the reset. xcb never falls back to an API key.

Is there an app or a terminal UI?

No. xcb is a command-line control plane built for unattended use. You sign in once, then an agent creates projects, tasks, schedules, routes, and hooks through xcb’s commands, and you check in with xcb tasks and xcb attention. Any agent terminal, including herdr, can hold the agent that drives it.

How is xcb different from claude-swap, Claude Code Router, or an LLM gateway?

claude-swap changes which login Claude Code uses; xcb picks an account for each task across Claude and Codex and sandboxes each run. Claude Code Router and LLM gateways such as OpenRouter route API requests per token; xcb never touches API traffic and runs whole tasks on the subscriptions you already pay for.

What stays on my computer?

xcb stores accounts, credentials, sessions, and settings on your computer, outside your projects. Model requests go to the provider that runs the task. The optional judge sends limited task context to Cloudflare’s Clef service. The usage history the installer turns on is kept by aicharts on your computer and never uploaded.

Can xcb run my tests and builds?

On macOS with Apple silicon, commands run offline in a Linux VM with public dependencies you prepare in advance. Git is read-only there, so you review and commit the changes yourself. Native macOS builds cannot run. Registered host MCP tools can provide additional capabilities; native provider shells remain unavailable.