Feature-rich fork of aurorallm/aurora — 55x faster than litellm. Session hub, multi-account API integration, load-balanced pools, dashboard CRUD for providers/pools/fallbacks, custom headers & User-Agent per provider, 14 provider types. OpenAI compatible. Go + multi-platform.
  • Go 79%
  • TypeScript 19.5%
  • HTML 0.5%
  • JavaScript 0.4%
  • CSS 0.3%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
entitybtw 2ef2cc32b9
Some checks are pending
CI / Unit Tests (push) Waiting to run
CI / Dashboard Unit Tests (push) Waiting to run
CI / Build (push) Blocked by required conditions
fix(extensions): refresh live files on update-from-source
Updating an applied extension from its source replaced the manifest but
left the materialised files and the loaded addon untouched: the
settings tab kept serving the old revision until a gateway restart,
because AddDir is idempotent and silently skipped the already-registered
directory.

update-from-source now re-resolves refs, re-materialises files and
reloads the addon for applied extensions (reporting files_refreshed or a
warning). LoadExtensionAddons drops the directory before re-attaching so
changed sources are re-evaluated, loadDir walks subdirectories (ref
manifests may materialise into them), and AttachExtensionAddons probes
the whole tree instead of the top level.
2026-09-29 08:32:56 +03:00
.github/workflows
apps/aurora chore(repo): track bindproxy subcommand and anchor root artifact ignores 2026-09-28 16:15:57 +03:00
build refactor: scrub branding from gateway (extension id and protocol kept) 2026-09-23 15:17:44 +03:00
configs feat: authorization-code + PKCE flow and Yaegi addon loader 2026-09-24 18:31:54 +03:00
configuration refactor(auth): move flows out of the core behind the external-auth bridge 2026-09-27 15:14:40 +03:00
dashboard-ui feat(extensions): companion-file refs, file editor, friendlier auth errors 2026-09-29 08:14:31 +03:00
docs-assets refactor(auth): move flows out of the core behind the external-auth bridge 2026-09-27 15:14:40 +03:00
documentation feat(extensions): companion-file refs, file editor, friendlier auth errors 2026-09-29 08:14:31 +03:00
heartbeat-worker
internal fix(extensions): refresh live files on update-from-source 2026-09-29 08:32:56 +03:00
monitoring
.dockerignore
.gitignore chore(repo): track bindproxy subcommand and anchor root artifact ignores 2026-09-28 16:15:57 +03:00
.goreleaser.yaml
artifacthub-repo.yml
CODE_OF_CONDUCT.md
docker-compose.yml
Dockerfile refactor: neutralize wording in docs and settings notices 2026-09-26 23:06:21 +03:00
Dockerfile.builder
Dockerfile.runtime refactor(auth): move flows out of the core behind the external-auth bridge 2026-09-27 15:14:40 +03:00
go.mod feat: authorization-code + PKCE flow and Yaegi addon loader 2026-09-24 18:31:54 +03:00
go.sum feat: authorization-code + PKCE flow and Yaegi addon loader 2026-09-24 18:31:54 +03:00
LICENSE
Makefile refactor: neutralize wording in docs and settings notices 2026-09-26 23:06:21 +03:00
package.json refactor: neutralize wording in docs and settings notices 2026-09-26 23:06:21 +03:00
README.md fix(sidecar): merge injected tools with client tools instead of skipping 2026-09-26 15:54:49 +03:00
SECURITY.md refactor: neutralize wording in docs and settings notices 2026-09-26 23:06:21 +03:00

AuroraX Logo

AuroraX

A self-hosted gateway that puts one OpenAI- and Anthropic-compatible API in front of many LLM providers.

License GitHub Stars Docker Pulls Docker Version

14 provider types • OpenAI & Anthropic compatible • Go • Apache 2.0

Repositories

What Where
Source code github.com/entitybtw/aurora
Extensions store (live) entitybtw.github.io/aurorax-store
Extensions store (source) github.com/entitybtw/aurorax-store
Docker image hub.docker.com/r/entbtw/aurora
AuroraX admin dashboard showing provider stats and usage metrics

Quick deploy

docker pull entbtw/aurora:latest
docker run -d --name aurora -p 8080:8080 -e AURORA_MASTER_KEY="your-secure-key" entbtw/aurora:latest

Dashboard: http://localhost:8080/admin/dashboard

For production (persistent config & state, multi-IP host networking) see the Deployment guide.

Documentation

Guide What it covers
Getting Started first run, build, config, basic usage
Deployment Docker / Docker Compose, persistent state, multi-IP
Multi-account pools load-balanced accounts with distinct, stable client identities
Session Hub header transformation & session mapping engine
Sidecar extension-driven TLS fingerprint proxy, multi-IP egress
Environment variables complete env var reference
Extensions themes, presets, addons — JSON surface, apply flow, safety
Docker image published image entbtw/aurora, tags, publishing

What it does

AuroraX sits between your app and LLM providers. Your app talks the standard OpenAI or Anthropic API — the gateway routes each request to whichever provider you've configured. One format handles everything.

# Before: hardcoded provider
client = OpenAI(base_url="https://api.openai.com/v1", api_key="sk-...")

# After: AuroraX
client = OpenAI(base_url="http://localhost:8080/v1", api_key="your-aurorax-key")

No SDK changes. No format changes. Just swap the base_url.

Features

Routing & providers

  • 14 provider types — OpenAI, Anthropic, Gemini, Groq, DeepSeek, OpenRouter, xAI, Z.ai, MiniMax, Azure OpenAI, Oracle, Ollama, vLLM, Jina
  • Auto-discovery — set a provider's _API_KEY, restart, provider and models appear
  • Per-provider model auto-fetch toggle, filter (substring / regex / price), custom User-Agent and base URL
  • Provider pools — round-robin or weighted distribution, health-aware failover
  • Fallback chains — automatic failover on 5xx/429 plus editable manual rules
  • Model aliases & overrides, passthrough routes (/p/{provider}/*)
  • Resilience — exponential backoff with jitter, per-provider circuit breaker

API surface

  • OpenAI-compatible: /v1/chat/completions, /v1/embeddings, /v1/rerank, /v1/models, /v1/files, /v1/batches
  • Responses API (/v1/responses) and Anthropic-compatible /v1/messages
  • SSE streaming end-to-end, keep-only-aliases and allowlist model modes

Caching

  • Exact cache (SHA-256, Redis), semantic cache (Qdrant / pgvector / Pinecone / Weaviate)
  • Prompt cache — forwards native cache_control with modes and thresholds
  • Model registry cache — local filesystem + Redis, offline-safe

Security & guardrails

  • Master key, managed API keys with per-key rate limits and model authorization
  • PII redaction, prompt-injection blocking, system prompt protection, regex blocking
  • Length limits and LLM-based altering, with input/output direction and ordering

Observability

  • Audit logging (configurable retention, live SSE stream), usage analytics with cost tracking
  • Prometheus metrics, structured logging, pprof endpoints
  • Admin dashboard built into the Go binary — full provider CRUD, pools, fallback, guardrails, cache, usage, audit, workflows, console, playground

Cost control

  • Token saver — policy-driven output compression (concise, caveman, ultra, wenyan)
  • Per-model pricing overrides, usage budgets per key

Performance

  • Streaming-first Go request paths; session mapping resolves in well under a microsecond per request
  • Benchmarked against a mock OpenAI-compatible upstream at 5,000 RPS (60 s runs, median of three, Intel i5-10300H): 4,986 req/s, 100% success rate, P50 17.7 ms, P99 47.2 ms

Session Hub — header transformation engine with per-provider/pool session mapping, 7 header modes (map, map_or_generate, generate, passthrough, static, random_from_list, remove), configurable charset, disk persistence and live editing. Full reference: documentation/SESSION_HUB.md.

Sidecar — bundled Bun proxy for extension-driven TLS fingerprinting with multi-IP egress (one CONNECT proxy per IP) and extension-supplied headers, tools and retries. Full reference: documentation/SIDECAR.md.

Extensions & store — portable JSON bundles that configure the sidecar and Session Hub in one apply; ship tool schemas, identity headers, auth defaults and optional provider types. Install from a store or by URL (POST /sidecar/extensions/import), then apply from Settings → Sidecar. Review extensions before installing them.

Quick start

1. Run the gateway

docker run -d --name aurora -p 8080:8080 \
  -e AURORA_MASTER_KEY="your-secure-key" \
  -e OPENAI_API_KEY="sk-..." \
  -e ANTHROPIC_API_KEY="sk-ant-..." \
  entbtw/aurora:latest

Or from source: go build -o aurora ./apps/aurora && ./aurora (aurora init scaffolds config.yaml, .env and data/).

2. Verify

curl -s http://localhost:8080/health          # {"status":"ok"}
open http://localhost:8080/admin/dashboard    # add a provider

3. Test a model call

curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-master-key" \
  -d '{"model":"groq/llama-4-scout-17b-16e-instruct","messages":[{"role":"user","content":"Hello!"}]}'

Anthropic format with streaming:

curl http://localhost:8080/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-master-key" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"anthropic/claude-sonnet-5-20260630","max_tokens":1024,"stream":true,"messages":[{"role":"user","content":"Hello!"}]}'

Providers

Providers are auto-discovered from environment variables. Set a _API_KEY and restart — the provider and its default models appear.

Provider Env var Default base URL API key
OpenAI OPENAI_API_KEY https://api.openai.com/v1 required
Anthropic ANTHROPIC_API_KEY https://api.anthropic.com/v1 required
Google Gemini GEMINI_API_KEY https://generativelanguage.googleapis.com/v1beta/openai required
Groq GROQ_API_KEY https://api.groq.com/openai/v1 required
DeepSeek DEEPSEEK_API_KEY https://api.deepseek.com required
OpenRouter OPENROUTER_API_KEY https://openrouter.ai/api/v1 required
xAI (Grok) XAI_API_KEY https://api.x.ai/v1 required
Z.ai ZAI_API_KEY https://api.z.ai/api/paas/v4 required
MiniMax MINIMAX_API_KEY https://api.minimax.io/v1 required
Azure OpenAI AZURE_API_KEY — (requires base URL + AZURE_API_VERSION) required
Oracle ORACLE_API_KEY — (requires base URL) required
Ollama OLLAMA_API_KEY http://localhost:11434/v1 optional
vLLM VLLM_API_KEY http://localhost:8000/v1 optional
Jina (reranker) JINA_API_KEY — (requires base URL) required

Handy knobs:

OPENAI_MODELS=gpt-5.6-sol,gpt-5.6-luna        # override auto-discovered models
OPENAI_BASE_URL=https://proxy.example.com/v1  # custom endpoint
OPENAI_EAST_API_KEY=sk-...                    # → provider openai-east

YAML providers add user_agent, auto_fetch_models, autofetch_filter (substring / regex / price conditions), bind_ip and pool_only — see Deployment and Multi-account pools.

Secrets go in your .env file (gitignored) or your secrets manager — never commit them.

Configuration

Priority (later wins):

code defaults → config.yaml → .env / environment variables

aurora init generates config.yaml with every section documented inline:

Section What it controls
server Port, base path, master key, passthrough, Anthropic ingress
admin Dashboard API and UI
models Discovery, overrides, allowlisting
storage SQLite (default), PostgreSQL, or MongoDB
logging Audit logging of requests/responses
usage Token tracking, pricing, retention
metrics Prometheus endpoint
guardrails Content safety filters
cache Model cache, response cache (exact + semantic)
combos Multi-model combo definitions
token_saver Output compression
fallback Provider failover rules
resilience Retry + circuit breaker
workflows Policy-based request routing

Pre-built profiles in configs/editions/:

Profile Use case
oss.env.example Minimal local — SQLite, no Redis
oss.local-power.env.example SQLite + Redis exact cache
oss.team.env.example Postgres + Redis + Qdrant — full team deployment

Every environment variable is listed in documentation/ENVIRONMENT.md.

CLI

Build from source (go build -o aurora ./apps/aurora) and run directly:

Command Description
aurora Start the gateway server (default port 8080)
aurora init Scaffold config.yaml, .env, data/
aurora bindproxy Run a single-IP HTTP CONNECT proxy (started automatically per egress IP)
aurora models sync Download upstream model registry to a local file
aurora models diff Show pricing diff between upstream and local snapshot
aurora models show Print effective pricing for a model
aurora -version / -help / -help-json Version, help, env schema as JSON

Repository structure

aurora/
├── apps/              # Application entrypoints (gateway, bindproxy subcommand)
├── internal/          # Core packages (providers, gateway, storage, guardrails, sessionhub, admin)
│   └── providers/sidecarclient/sidecar/  # Bun sidecar
├── dashboard-ui/      # React admin dashboard (Vite)
├── configs/           # Configuration profiles and examples
├── documentation/     # Guides (Getting Started, Deployment, Session Hub, Sidecar, …)
├── docs-assets/       # Images, models.json, assets
├── build/             # docker-entrypoint.sh (starts bind proxies + sidecar)
├── Dockerfile         # Multi-stage: runtime / runtime-sidecar targets
├── Dockerfile.runtime # Local-artifact build (build/aurora + dashboard dist)
└── Dockerfile.builder # Combined Go+Bun builder image

License

Apache 2.0 — see LICENSE.

Community fork of Aurora. Session Hub and multi-account integration built by entitybtw.