niuron
niuron / control-plane

Stop hand-wiring
provider SDKs.

One API in front of OpenAI, Anthropic, Gemini, and your own self-hosted models. Cost- and latency-aware routing, response caching, and automatic fallback — so a provider outage doesn’t become your outage.

live routing decision
POST/v1/chat/completionsmodel: "auto" · task: summarization
router.route()
OpenAI
gpt-4o-mini
$0.15/1M inscore 0.71
Anthropic
claude-3-5-haiku
$0.80/1M inscore 0.68
Gemini
gemini-1.5-flash
$0.075/1M inscore 0.79
selected
self-hosted
qwen2.5-0.5b
$0.00 inscore 0.44
Routed to gemini-1.5-flash — cheapest eligible model for this task, weighted across cost, quality, and latency.
capabilities
routing

The right model, every time

Every request is scored on cost, latency, quality, and reliability, then sent to the best eligible model — automatically.

caching

Don't pay for the same answer twice

Exact-match and semantic (pgvector) caching cut repeat costs to zero, with tenant isolation and configurable safeguards.

shadow routing

Try a model without the risk

Sample real traffic to an alternate model and compare it against production — your client only ever sees the response you chose to serve.

reliability

A provider outage isn't your outage

Retries with full-jitter backoff, a circuit breaker per provider, and automatic fallback chains keep requests flowing.

observability

See where every request went

Cost, latency, cache hits, and the routing decision behind them — queryable in the dashboard, in real time.

how it works
1

Sign up, grab a key

Free plan, no card required. Your first API key is one click away in the dashboard.

2

Point your client at us

Swap the base URL and key in your existing OpenAI SDK. Everything else — messages, streaming, tool calls — stays the same.

3

Watch it route

Every request is classified and scored against your registered models, then sent to the best eligible one.

integrate

OpenAI-compatible. Point your existing client at /v1/chat/completions with your router API key — no new SDK to learn.

curl
curl https://api.niuron.ai/v1/chat/completions \
  -H "Authorization: Bearer ar_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "auto",
    "messages": [{"role": "user", "content": "Explain routing in one sentence."}]
  }'
python
from openai import OpenAI

client = OpenAI(
    base_url="https://api.niuron.ai/v1",
    api_key="ar_live_...",  # Dashboard -> API keys
)

resp = client.chat.completions.create(
    model="auto",  # or pin one, e.g. "gpt-4o"
    messages=[{"role": "user", "content": "Explain routing in one sentence."}],
)
node
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.niuron.ai/v1",
  apiKey: "ar_live_...", // Dashboard -> API keys
});

const resp = await client.chat.completions.create({
  model: "auto", // or pin one, e.g. "gpt-4o"
  messages: [{ role: "user", content: "Explain routing in one sentence." }],
});

model: "auto" lets the router pick; request a specific model (e.g. gpt-4o, claude-sonnet-5) to pin it instead — the response shape is identical either way.

works with your agent

Every OpenAI-compatible coding agent takes the same two settings — swap them in and keep the tool you already use.

Cursor Settings -> Models -> Add Model -> enable "Override OpenAI Base URL"
Base URL:  https://api.niuron.ai/v1
API Key:   ar_live_...
(click Verify)
Cline VS Code -> Cline settings (gear icon) -> API Provider -> "OpenAI Compatible"
Base URL:  https://api.niuron.ai/v1
API Key:   ar_live_...
Model ID:  auto
Kilo Code VS Code -> Kilo Code settings -> API Provider -> "OpenAI Compatible"
Base URL:  https://api.niuron.ai/v1
API Key:   ar_live_...
Continue.dev config.yaml
models:
  - name: niuron
    provider: openai
    model: auto
    apiBase: https://api.niuron.ai/v1
    apiKey: ar_live_...
Aider shell
export OPENAI_API_BASE=https://api.niuron.ai/v1
export OPENAI_API_KEY=ar_live_...
aider --model openai/auto
Hermes Agent ~/.hermes/.env
OPENAI_BASE_URL=https://api.niuron.ai/v1
OPENAI_API_KEY=ar_live_...

Ready to stop babysitting provider SDKs?