Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

omni-combos-routing — Claude Code skill: setup

This skill creates and manages model routing combos with fallback chains, tests, and metrics. Use it when OmniRoute needs configurable provider routing.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add cheaper-inference/OmniRoute --skill omni-combos-routing -a claude-code
Open on GitHub

What omni-combos-routing does

omni-combos-routing manages named groups of providers and models. It can create, update, duplicate, reorder, list, and delete combos, with 19 routing strategies such as priority, weighted, round-robin, auto, fusion, and pipeline. A combo lets callers use one model ID while OmniRoute selects among its targets.

The skill also creates and removes fallback chains, tests combo configurations, and retrieves combo metrics. Requests use OMNIROUTE_URL and OMNIROUTE_KEY; the API accepts a Bearer token or session cookie as well. Check OmniRoute access and API permissions before using these operations.

The main routes are /api/combos and /api/fallback/chains, plus their related endpoints. Partial updates keep omitted fields, while an array included in an update replaces the stored array.

What it helps with

  • create a provider and model combo
  • choose how requests are distributed
  • configure a model fallback chain
  • test a routing configuration
  • retrieve combo metrics

Example prompts for the agent

  • Create a combo named `prod-auto` with the `auto` strategy for the available models and save it through the API.
  • Test the combo with ID `{id}` and show the routing result.
  • List fallback chains and combo metrics using `OMNIROUTE_URL` with `OMNIROUTE_KEY`.

How to install omni-combos-routing

1Skills CLI (Vercel)

npx skills add cheaper-inference/OmniRoute --skill omni-combos-routing -a claude-code

2Manually: put the files in place

~/.claude/skills/omni-combos-routing/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/omni-combos-routing/

From the same set34

The whole set →
cli-setup cheaper-inference Helps the agent configure OmniRoute, manage autostart, apply CLI updates, and adjust session environment variables. Claude Code CX Codex Cursor +1 1,200installs omni-inference cheaper-inference Connects OpenAI-compatible inference endpoints for chat, embeddings, audio, and images. Useful for AI agents calling OmniRoute endpoints. Claude Code CX Codex Cursor +1 1,100installs cli-providers cheaper-inference Manage OmniRoute provider connections from the CLI: inspect the catalog, test connections, rotate keys, and view metrics. Useful when provider setup is part of your terminal workflow. Claude Code CX Codex Cursor +1 1,100installs omni-auth cheaper-inference Manage API keys and sessions in OmniRoute. Authenticates requests via Bearer tokens, handles dashboard login with password or OIDC, and controls session access. Claude Code CX Codex Cursor +1 1,100installs cli-routing cheaper-inference Manage model routing combos from the command line with omniroute. Test routing strategies, inspect metrics, and configure fallback chains interactively. Claude Code CX Codex Cursor +1 1,100installs omni-mcp cheaper-inference Connects an agent to the OmniRoute MCP server for request routing, memory, cache, and audit work. Use it when those operations need to be available as MCP tools. Claude Code CX Codex Cursor +1 1,100installs omni-providers cheaper-inference Manages connections to 375 AI providers via REST API: adds keys, tests connections, syncs models. Claude Code CX Codex Cursor +1 1,100installs cli-keys cheaper-inference Manages OmniRoute API keys and provider OAuth flows from your terminal. Handy when configuring model access and usage policies. Claude Code CX Codex Cursor +1 1,000installs

Similar

ce-riffrec-feedback-analysis EveryInc Turns recorded product feedback into structured bugs and requirements. Takes video, screenshots or notes from Riffrec and outputs a ready-to-use report for downstream agents. Claude Code CX Codex Cursor +1 2,800installs runcomfy-cli prime-skills This skill lets Claude Code call RunComfy models from a terminal, handle authentication, track jobs, and download generated files. Claude Code CX Codex Cursor +1 379,700installs face-swap prime-skills This skill swaps faces and characters in video and images through the RunComfy CLI. It automatically picks the right model: audio-driven video, single frame, batch, motion-preserving, or identity-preserving. Claude Code CX Codex Cursor +1 379,300installs ios-simulator callstack Launch, inspect, and debug native, React Native, Expo, and Flutter apps on iOS Simulator from your agent. The agent can tap, type, scroll, validate code changes, and collect error logs. Claude Code CX Codex Cursor +1 5,100installs imessage Hermes Agent A skill that lets your coding agent read Messages.app chats and send iMessage or SMS from the terminal on macOS. Handy when the conversation stays local. Claude Code CX Codex Cursor +1 464installs video-inpainting prime-skills Edits regions across video frames through RunComfy, including object removal, wire cleanup, watermark removal, and motion-matched replacement. Claude Code CX Codex Cursor +1 377,700installs setup-matt-pocock-skills Matt Pocock This skill configures a repository for Matt Pocock's engineering skills by setting its issue tracker, triage labels, and domain docs layout. Run it before using the other skills. Claude Code 1,052,851installs to-tickets Matt Pocock Turns a plan, spec, or conversation into small end-to-end tickets with explicit blockers. Use it to agree on the work breakdown before tickets go to a tracker. Claude Code 711,230installs

Questions about omni-combos-routing

How do I install omni-combos-routing in Claude Code?

Run npx skills add cheaper-inference/OmniRoute --skill omni-combos-routing -a claude-code, then run the same command again: npx skills add cheaper-inference/OmniRoute --skill omni-combos-routing -a claude-code. The skill file is placed at ~/.claude/skills/omni-combos-routing/SKILL.md.

What does omni-combos-routing do?

It manages OmniRoute combos of providers and models, including routing strategies, fallback chains, configuration tests, and combo metrics.

What is required for omni-combos-routing to work?

Set OMNIROUTE_URL and OMNIROUTE_KEY. API requests also require a Bearer token or session cookie.

Source text

SKILL.md · MIT
---
name: omni-combos-routing
description: Create and manage routing combos with 19 strategies (priority, weighted, round-robin, Auto-combo, and more). Configure fallback chains, test routing outcomes, and retrieve combo metrics.
---
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->

## Overview

Create and manage routing combos with 19 strategies (priority, weighted, round-robin, Auto-combo, and more). 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

```bash
curl http://localhost:20128/api/combos \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/combos

Create routing combo

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

### GET /api/combos/{id}

Get combo by ID

```bash
curl http://localhost:20128/api/combos/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### PUT /api/combos/{id}

Update combo

Partial update: the body is merged onto the stored combo, so a field left out keeps its current value. An array that IS sent replaces the stored one outright.

```bash
curl -X PUT http://localhost:20128/api/combos/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### PATCH /api/combos/{id}

Update combo

Partial update: the body is merged onto the stored combo, so a field left out keeps its current value. An array that IS sent replaces the stored one outright.

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

### DELETE /api/combos/{id}

Delete combo

```bash
curl -X DELETE http://localhost:20128/api/combos/{id} \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### GET /api/combos/metrics

Get combo metrics

```bash
curl http://localhost:20128/api/combos/metrics \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/combos/test

Test a combo configuration

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

### GET /api/fallback/chains

List fallback chains

Returns all registered fallback chains for model routing.

```bash
curl http://localhost:20128/api/fallback/chains \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/fallback/chains

Create fallback chain

Registers a fallback routing chain for a model.

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

### DELETE /api/fallback/chains

Delete fallback chain

```bash
curl -X DELETE http://localhost:20128/api/fallback/chains \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### GET /api/combos/auto

GET combos › auto

```bash
curl http://localhost:20128/api/combos/auto \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### GET /api/combos/builder/options

GET combos › builder › options

```bash
curl http://localhost:20128/api/combos/builder/options \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN"
```

### POST /api/combos/duplicate

POST combos › duplicate

```bash
curl -X POST http://localhost:20128/api/combos/duplicate \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### POST /api/combos/reorder

POST combos › reorder

```bash
curl -X POST http://localhost:20128/api/combos/reorder \
  -H "Authorization: Bearer $OMNIROUTE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

## Payloads

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

<!-- skill:custom-start -->
<!-- Migrated from skills/omniroute-routing/SKILL.md (preserved curated content) -->

# OmniRoute — Routing & Combos

Requires `OMNIROUTE_URL` and `OMNIROUTE_KEY`. See [entry-point SKILL](https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-auth/SKILL.md) 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

```bash
curl $OMNIROUTE_URL/api/combos \
  -H "Authorization: Bearer $OMNIROUTE_KEY"
```

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

## Create a combo

```bash
curl -X POST $OMNIROUTE_URL/api/combos \
  -H "Authorization: Bearer $OMNIROUTE_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 }
    ]
  }'
```

## 19 public routing strategies

| Strategy | Description |
| --- | --- |
| `priority` | Always use target[0]; fall back on error |
| `weighted` | Distribute by weight percentage |
| `round-robin` | Rotate targets in order |
| `context-relay` | Chain models for very long contexts |
| `fill-first` | Fill quota of target[0] before spilling |
| `p2c` | Power-of-two choices: sample two targets, pick the better candidate |
| `random` | Uniform random selection |
| `least-used` | Route to the target with the lowest observed usage |
| `cost-optimized` | Pick the cheapest eligible target for the token estimate |
| `reset-aware` | Prefer targets based on quota-reset state |
| `reset-window` | Order targets by their configured reset window |
| `headroom` | Prefer targets with more remaining quota headroom |
| `strict-random` | Random without repeating until all targets have been used |
| `auto` | Auto-Combo scoring across 16 factors |
| `lkgp` | Last-known-good-provider sticky routing |
| `context-optimized` | Pick the best model for the request's context size |
| `cache-optimized` | Prefer targets with stronger cache affinity |
| `fusion` | Run a panel in parallel and synthesize one judged response |
| `pipeline` | Run a configured sequence of targets as a pipeline |

## Auto-combo (recommended for production)

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

```bash
curl -X POST $OMNIROUTE_URL/api/combos \
  -H "Authorization: Bearer $OMNIROUTE_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:

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

## Activate / deactivate a combo

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

## Get combo metrics

```bash
curl $OMNIROUTE_URL/api/combos/{id}/metrics \
  -H "Authorization: Bearer $OMNIROUTE_KEY"
```

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

## Simulate routing (dry run)

```bash
curl -X POST $OMNIROUTE_URL/api/routing/simulate \
  -H "Authorization: Bearer $OMNIROUTE_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 OmniRoute is your MCP server)

```
omniroute_list_combos     → list all combos
omniroute_switch_combo    → enable/disable a combo
omniroute_set_routing_strategy → change strategy at runtime
omniroute_simulate_route  → dry-run routing decision
omniroute_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 19 strategies above
- `409 name conflict` → combo name already exists
<!-- skill:custom-end -->

© cheaper-inference · MIT · cheaper-inference/OmniRoute

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor