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

omni-auth — Claude Code skill: OmniRoute authentication

Manage API keys and sessions in OmniRoute. Authenticates requests via Bearer tokens, handles dashboard login with password or OIDC, and controls session access.

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

What omni-auth does

omni-auth handles authentication for a local or remote OmniRoute gateway. The skill exposes /api/auth/login, /api/auth/logout, and OIDC flows for dashboard access. You get a 30-day auth_token JWT, protect the dashboard with it, and can switch between password login and OIDC or run both in parallel.

Inside: POST and GET methods for password login (requires management_password), logout with CSRF token, OIDC initiation via issuer and client config, ID token validation against JWKS, and checking sub/email against oidcAllowedSubjects. The skill includes curl examples for all endpoints and points to the OpenAPI spec at /api/openapi/spec.

Boundary: OIDC requires at least one entry in oidcAllowedSubjects — an empty list blocks login with not_configured. Password login remains available as fallback while OIDC is enabled.

What it helps with

  • Authenticate requests to OmniRoute API with a Bearer token
  • Get and store a session JWT for dashboard login
  • Set up OIDC login alongside or instead of password auth
  • Log out securely with CSRF protection
  • Use one OmniRoute key across multiple AI code editors

Example prompts for the agent

  • Install omni-auth and set `OMNIROUTE_URL` and `OMNIROUTE_KEY` to authorize API calls with Bearer
  • Call POST /api/auth/login with your management password, receive `auth_token` in a session cookie, and access the dashboard
  • Enable an OIDC provider in OmniRoute; omni-auth redirects to `/authorize` and validates the ID token on return

How to install omni-auth

1Skills CLI (Vercel)

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

2Manually: put the files in place

~/.claude/skills/omni-auth/SKILL.md

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

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-combos-routing cheaper-inference This skill creates and manages model routing combos with fallback chains, tests, and metrics. Use it when OmniRoute needs configurable provider routing. 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 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

gitnexus-cli abhigyanpatwari This skill runs GitNexus commands to index a repository, inspect index status, clean stored data, and generate a wiki. Use it when an agent needs project context. Claude Code CX Codex Cursor +1 866installs paseo-plugin getpaseo Builds and manages local Paseo plugins with UI panels, slash commands, lifecycle hooks, and daemon RPCs. Claude Code CX Codex Cursor +1 1,400installs paseo-help getpaseo Answers questions about Paseo setup, connections, providers, logs, and failures. Use it when you need to understand the daemon, workspaces, or app configuration. Claude Code CX Codex Cursor +1 1,400installs ascii-art 0xbyt4, Hermes Agent Renders text banners, borders, speech bubbles and converts images to ASCII art using pyfiglet, cowsay, boxes and image converters. Claude Code CX Codex Cursor +1 423installs codebase-inspection Hermes Agent Counts code lines, files, languages, and code-to-comment ratios with pygount. Use it to inspect a repository’s size and composition. Claude Code CX Codex Cursor +1 420installs resume-quantifier Paramchoudhary A skill that spots resume bullets without numbers and helps estimate metrics when exact data is missing. Useful when your experience section has no quantifiable results. Claude Code CX Codex Cursor +1 10,000installs 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-auth

How do I install omni-auth in Claude Code?

Run npx skills add cheaper-inference/OmniRoute --skill omni-auth -a claude-code. The skill is saved to ~/.claude/skills/omni-auth/SKILL.md and becomes available in Claude Code.

What does omni-auth do?

It manages authentication for OmniRoute. Provides endpoints for password or OIDC login, issues a 30-day JWT for dashboard sessions, enforces secure logout with CSRF, and validates ID tokens against the OIDC provider's JWKS.

What is required to use OIDC with omni-auth?

Configure an OIDC provider in OmniRoute (issuer and client), set at least one entry in oidcAllowedSubjects (checked against sub or email from the ID token), and ensure access to {issuer}/.well-known/openid-configuration or {issuer}/authorize. An empty oidcAllowedSubjects list returns not_configured.

Source text

SKILL.md · MIT
---
name: omni-auth
description: Manage API key authentication and session tokens. Start here to authenticate requests via Bearer token, obtain session cookies, and configure login requirements for the OmniRoute API.
---
<!-- generated by src/lib/agentSkills/generator.ts; manual edits will be overwritten -->

## Overview

Manage API key authentication and session tokens. Start here to authenticate requests via Bearer token, obtain session cookies, and configure login requirements for the OmniRoute API.

## Authentication

Remote API requests use a Bearer credential. Dashboard login is different: `POST /api/auth/login` accepts a management password and returns an `auth_token` session cookie.

## Endpoints

### POST /api/auth/login

Authenticate user

```bash
curl -X POST http://localhost:20128/api/auth/login \
  -H "Content-Type: application/json" \
  -c cookie.jar \
  -d '{"password":"<management-password>"}'
```

### POST /api/auth/logout

Log out

```bash
CSRF_TOKEN=$(curl -s http://localhost:20128/api/auth/csrf -b cookie.jar | jq -r .token)
curl -X POST http://localhost:20128/api/auth/logout \
  -b cookie.jar \
  -H "x-omniroute-csrf: $CSRF_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### GET /api/auth/oidc/login

Start OIDC login for the dashboard admin gate

Builds an authorization URL from the configured OIDC issuer/client (discovered
via `{issuer}/.well-known/openid-configuration`, falling back to `{issuer}/authorize`),
sets a short-lived `oidc_state` cookie, and redirects the browser. Password login
remains available as a fallback while OIDC is enabled.


```bash
curl http://localhost:20128/api/auth/oidc/login \
  -b cookie.jar
```

### GET /api/auth/oidc/callback

Complete OIDC login for the dashboard admin gate

Validates the `state` cookie, exchanges the authorization `code` for tokens,
verifies the ID token against the issuer's JWKS (audience = client id), and
checks the token's `sub`/`email` against `oidcAllowedSubjects`, which must hold at
least one entry (an empty list ends in `not_configured`). On success it mints the same 30-day `auth_token` dashboard-session
JWT used by password login and redirects to `/dashboard`.


```bash
curl http://localhost:20128/api/auth/oidc/callback \
  -b cookie.jar
```

### GET /api/auth/csrf

GET auth › csrf

```bash
curl http://localhost:20128/api/auth/csrf \
  -b cookie.jar
```

### GET /api/auth/status

GET auth › status

```bash
curl http://localhost:20128/api/auth/status \
  -b cookie.jar
```

## 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/SKILL.md (preserved curated content) -->

# OmniRoute

Local/remote AI gateway exposing OpenAI-compatible REST. One key, 375 providers,
auto-fallback, RTK token saver, MCP server, A2A agents.

## Setup

```bash
export OMNIROUTE_URL="http://localhost:20128"      # or VPS / tunnel URL
export OMNIROUTE_KEY="sk-..."                       # from Dashboard → API Keys
```

All requests: `${OMNIROUTE_URL}/v1/...` with `Authorization: Bearer ${OMNIROUTE_KEY}`.

Verify: `curl $OMNIROUTE_URL/api/health` → `{"ok":true}`

## Discover models

```bash
curl $OMNIROUTE_URL/v1/models                  # chat/LLM (default)
curl $OMNIROUTE_URL/v1/models/image            # image-gen
curl $OMNIROUTE_URL/v1/models/tts              # text-to-speech
curl $OMNIROUTE_URL/v1/models/embedding        # embeddings
curl $OMNIROUTE_URL/v1/models/web              # web search + fetch
curl $OMNIROUTE_URL/v1/models/stt              # speech-to-text
```

Use `data[].id` as `model` field in requests. Combos appear with `owned_by:"combo"`.

## Capability skills

| Capability             | Raw URL                                                                                           |
| ---------------------- | ------------------------------------------------------------------------------------------------- |
| Chat / code-gen        | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-inference/SKILL.md      |
| Image generation       | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-inference/SKILL.md      |
| Text-to-speech         | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-inference/SKILL.md      |
| Speech-to-text         | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-inference/SKILL.md      |
| Embeddings             | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-inference/SKILL.md      |
| Web search             | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-inference/SKILL.md      |
| Web fetch              | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-inference/SKILL.md      |
| MCP server (110 tools) | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-mcp/SKILL.md            |
| A2A protocol           | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-agents-a2a/SKILL.md     |
| Routing & combos       | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-combos-routing/SKILL.md |
| Token compression      | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-compression/SKILL.md    |
| Monitoring & health    | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/omni-resilience/SKILL.md     |

## CLI skills (omniroute binary)

| Capability                             | Raw URL                                                                                       |
| -------------------------------------- | --------------------------------------------------------------------------------------------- |
| CLI entry point                        | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/cli-serve/SKILL.md       |
| CLI admin & lifecycle                  | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/cli-serve/SKILL.md       |
| CLI providers & keys                   | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/cli-providers/SKILL.md   |
| CLI cloud agents (`omniroute cloud …`) | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/cli-backup-sync/SKILL.md |
| CLI evals & benchmarks                 | https://raw.githubusercontent.com/diegosouzapw/OmniRoute/main/skills/cli-eval/SKILL.md        |

## Errors

- `401` → set/refresh `OMNIROUTE_KEY` (Dashboard → API Keys)
- `400 Invalid model format` → check `model` exists in `/v1/models/<kind>`
- `503 Provider circuit open` → upstream provider down; retry after `Retry-After` seconds
- `429` → rate limited; honor `Retry-After`

## Differentiators vs OpenAI direct

- **Auto-fallback** combos (19 strategies): never stop coding even if a provider rate-limits
- **RTK token saver**: tool_result compressed via 47 specialized filters (git-diff, test-jest, terraform-plan, docker-logs…) — 20-40% token reduction
- **Caveman mode**: optional terse system prompt injection (LITE/FULL/ULTRA) — 15-25% completion reduction
- **MCP + A2A** servers built-in (this is the only AI router that exposes both protocols)
- **Memory** with FTS5 + Qdrant for persistent agent context
- **Guardrails** for PII masking, prompt injection detection, vision policies
<!-- 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