Alex
Local AI control plane

Your subscriptions.
One resilient model team.

Route the models you already pay for into a compatible harness you prefer. When one model is overloaded, enabled middleware can move the session and leave a trace that explains exactly why.

Three source-checked walkthroughs

Route it. Rescue it. Ask again.

Each replay is synthetic, contains no visitor data, and is checked against the implementation during the site build.

Use it anywhere

Your Claude subscription. The harness you prefer.

Connect once, then use Opus from Pi while Alex preserves the real route.

  1. Connect the Claude subscriptionOAuth credentials stay in Alex's encrypted local vault
  2. Connect Pi to Alexalex connect pi installs the scoped local route
  3. Pi asks for Opus 4.8pi --model alex/claude-opus-4-8 -p “Review this”
  4. Alex selects the subscription pathNon-Claude-Code Anthropic traffic is routed through Dario
  5. The trace proves where it ranPi · Anthropic · Opus 4.8 · subscription identity · Dario

Demo ready. Play it or move one step at a time.

Try this route locally. Connect a harness
Deterministic fixture · no live prompts

Fable 5 is full. The session keeps moving.

Play the whole route, pause it, or inspect one decision at a time.

  1. Request enters Alexclaude asks for claude-fable-5
  2. Alex routes to Fable 5anthropic receives the first attempt
  3. Fable returns a verified capacity signalHTTP 529 · overloaded_error
  4. The middleware rule matchesFable failed with a selected overload or availability error
  5. Alex retries with Sol 5.6openai serves gpt-5.6-sol
  6. The session is pinned and the trace explains why24 hour pin · next turn skips Anthropic

Demo ready. Play it or move one step at a time.

Reveal the actual middleware rule

This readable rule is checked against the same Rust built-in and deterministic fixture used by Alex.

{
  "id": "example.fable-overload-to-sol",
  "name": "Move overloaded Fable chats to Sol",
  "description": "Reroute selected failed Anthropic Fable requests to OpenAI Sol.",
  "enabled": true,
  "priority": 100,
  "hook": "attempt_result",
  "capabilities": [
    "attempt.read_error_body",
    "route.override",
    "session.pin",
    "response.prepend_text"
  ],
  "when": {
    "harness_names": [
      "claude",
      "codex",
      "pi"
    ],
    "models": [
      "claude-fable-5",
      "fable-*"
    ],
    "providers": [
      "anthropic"
    ],
    "status": [
      429,
      "500-599"
    ],
    "error_classes": [
      "capacity",
      "server"
    ],
    "body_contains_any": [
      "model is currently overloaded",
      "subscription is unavailable"
    ]
  },
  "then": {
    "reroute": {
      "model": "gpt-5.6-sol",
      "providers": [
        "openai"
      ],
      "provider_mode": "only",
      "scope": "session",
      "ttl_seconds": 86400,
      "notice": "We moved this chat from Fable 5 to GPT 5.6 Sol.",
      "reason": "Fable failed with a selected overload or availability error",
      "max_attempts": 3,
      "required_capabilities": {
        "portable_history": true
      }
    }
  }
}
Install the built-in preset and replay its fixture. Open middleware docs
Ask a second model

Keep the first answer. Ask for another opinion.

Fork the captured session into Pi and Sol without losing which model produced which answer.

  1. Claude produces the first answerThe source turn is captured with its model and account provenance
  2. Ask for an independent opinionalex resume session-42 pi --model alex/gpt-5.6-sol
  3. Alex reconstructs the verified historyThe target receives the prior conversation in provider-native order
  4. Sol 5.6 answers in PiThe second subscription produces a separately attributed turn
  5. Both answers remain in one lineageThe target records its source session, harness, model, and fork time

Demo ready. Play it or move one step at a time.

Fork a real captured session into another harness. Read session-fork docs
Your path

Which setup sounds like yours?

Selecting an option records only its name—never account details or credentials.

Use it from

Pick a provider and harness to see the route you are interested in.

Open the CLIProxyAPI docs

Keep your next session moving

Install Alex locally.

curl -fsSL https://raw.githubusercontent.com/madhavajay/alex/main/install-release.sh | sh