omni-combos-routing

SkillDev tools

An AI gateway with enhanced compliance for mainland China

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the omni-combos-routing skill

What this skill tells your AI

The instructions your AI receives, as published by jaccen/airoute in skills/omni-combos-routing/SKILL.md and read by ahel’s review.

Overview

Create and manage routing combos with 14 strategies (priority, weighted, round-robin, Auto-combo, etc.). Configure fallback chains, test routing outcomes, and retrieve combo metrics.

Authentication

All requests require a valid Bearer token or session cookie. Obtain a token via POST /api/auth/login or configure REQUIRE_API_KEY=false for local development.

Endpoints

GET /api/combos

List routing combos

curl https://localhost:20128/api/combos \
  -H "Authorization: Bearer $AIRoute_TOKEN"

POST /api/combos

Create routing combo

curl -X POST https://localhost:20128/api/combos \
  -H "Authorization: Bearer $AIRoute_TOKEN"
  -H "Content-Type: application/json" \
  -d '{}'

PATCH /api/combos/{id}

Update combo

curl -X PATCH https://localhost:20128/api/combos/{id} \
  -H "Authorization: Bearer $AIRoute_TOKEN"
  -H "Content-Type: application/json" \
  -d '{}'

DELETE /api/combos/{id}

Delete combo

curl -X DELETE https://localhost:20128/api/combos/{id} \
  -H "Authorization: Bearer $AIRoute_TOKEN"

GET /api/combos/metrics

Get combo metrics

curl https://localhost:20128/api/combos/metrics \
  -H "Authorization: Bearer $AIRoute_TOKEN"

POST /api/combos/test

Test a combo configuration

curl -X POST https://localhost:20128/api/combos/test \
  -H "Authorization: Bearer $AIRoute_TOKEN"
  -H "Content-Type: application/json" \
  -d '{}'

GET /api/fallback/chains

List fallback chains

Returns all registered fallback chains for model routing.

curl https://localhost:20128/api/fallback/chains \
  -H "Authorization: Bearer $AIRoute_TOKEN"

POST /api/fallback/chains

Create fallback chain

Registers a fallback routing chain for a model.

curl -X POST https://localhost:20128/api/fallback/chains \
  -H "Authorization: Bearer $AIRoute_TOKEN"
  -H "Content-Type: application/json" \
  -d '{}'

DELETE /api/fallback/chains

Delete fallback chain

curl -X DELETE https://localhost:20128/api/fallback/chains \
  -H "Authorization: Bearer $AIRoute_TOKEN"

Payloads

See the full OpenAPI specification at GET /api/openapi/spec or docs/openapi.yaml for detailed request/response schemas.

AIRoute — Routing & Combos

Requires AIRoute_URL and AIRoute_KEY. See entry-point SKILL for setup.

What is a combo?

A combo is a named group of providers/models with a routing strategy. All requests through a combo are automatically distributed, failed-over, and load-balanced — the caller uses a single model ID like my-combo.

List existing combos

curl $AIRoute_URL/api/combos \
  -H "Authorization: Bearer $AIRoute_KEY"

Response includes id, name, strategy, enabled, and per-target stats.

Create a combo

curl -X POST $AIRoute_URL/api/combos \
  -H "Authorization: Bearer $AIRoute_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-combo",
    "strategy": "priority",
    "targets": [
      { "provider": "anthropic", "model": "claude-opus-4-7", "weight": 1 },
      { "provider": "openai",    "model": "gpt-4o",           "weight": 1 }
    ]
  }'

14 routing strategies

StrategyDescription
priorityAlways use target[0]; fall back on error
weightedDistribute by weight percentage
round-robinRotate targets in order
fill-firstFill quota of target[0] before spilling
least-usedRoute to target with fewest active requests
cost-optimizedPick cheapest target for the token estimate
auto9-factor scoring: cost + latency + quota + circuit
randomUniform random selection
strict-randomRandom without repeating until all used
p2cPower-of-2-choices: sample 2, pick better
reset-awarePrefer targets near quota reset time
lkgpLast-known-good-provider sticky routing
context-optimizedPick best model for context length
context-relayChain models for very long contexts

Auto-combo (recommended for production)

Auto-combo scores each candidate on 9 factors every request:

curl -X POST $AIRoute_URL/api/combos \
  -H "Authorization: Bearer $AIRoute_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "prod-auto",
    "strategy": "auto",
    "targets": [
      { "provider": "anthropic", "model": "claude-sonnet-4-6" },
      { "provider": "openai",    "model": "gpt-4o-mini" },
      { "provider": "google",    "model": "gemini-2.0-flash" }
    ]
  }'

Then call it with:

curl -X POST $AIRoute_URL/v1/chat/completions \
  -H "Authorization: Bearer $AIRoute_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "prod-auto", "messages": [{ "role": "user", "content": "Hello" }] }'

Activate / deactivate a combo

# Activate
curl -X PUT $AIRoute_URL/api/combos/{id}/toggle \
  -H "Authorization: Bearer $AIRoute_KEY" \
  -d '{ "enabled": true }'

Get combo metrics

curl $AIRoute_URL/api/combos/{id}/metrics \
  -H "Authorization: Bearer $AIRoute_KEY"

Returns p50/p95/p99 latency, success rate, cost, and per-target breakdown.

Simulate routing (dry run)

curl -X POST $AIRoute_URL/api/routing/simulate \
  -H "Authorization: Bearer $AIRoute_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "comboId": "{id}", "messages": [{ "role": "user", "content": "test" }] }'

Returns which provider would be selected and why — no actual API call is made.

Via MCP (if AIRoute is your MCP server)

AIRoute_list_combos     → list all combos
AIRoute_switch_combo    → enable/disable a combo
AIRoute_set_routing_strategy → change strategy at runtime
AIRoute_simulate_route  → dry-run routing decision
AIRoute_best_combo_for_task → get recommendation by task type

Errors

  • 404 combo not found → check id from /api/combos
  • 400 invalid strategy → use one of the 14 strategies above
  • 409 name conflict → combo name already exists

Signals

GitHub stars
32
Forks
8
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
omni-combos-routing-jaccen
Source
github.com/jaccen/airoute