Aurora OSS — open-source OpenAI-compatible AI gateway for multi-provider LLM routing
808
Aurora OSS is an open-source, OpenAI-compatible AI gateway that routes requests across multiple LLM providers. It acts as a unified API endpoint for OpenAI, Anthropic, Gemini, Groq, xAI, Z.ai, vLLM, and custom providers — with built-in caching, guardrails, usage tracking, provider pools, and a management dashboard.
docker pull aurorahq/aurora:1.0.30
Run with a single provider:
docker run -d -p 8080:8080 \
--name aurora \
-e GROQ_API_KEY=gsk_your_key_here \
-e AURORA_MASTER_KEY=your-admin-key \
aurorahq/aurora:1.0.30
# Verify it works
curl http://localhost:8080/health
# → {"status":"ok"}
# List available models
curl http://localhost:8080/v1/models
# → {"object":"list","data":[{"id":"groq/llama-3.3-70b-versatile",...}]}
# Chat completion
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"groq/llama-3.3-70b-versatile","messages":[{"role":"user","content":"Hello!"}]}'
| Feature | Description |
|---|---|
| OpenAI-compatible API | Drop-in replacement — use existing OpenAI SDKs by changing base_url |
| Multi-provider routing | Route requests to OpenAI, Anthropic, Gemini, Groq, xAI, Z.ai, vLLM, and more |
| Provider pools | Load-balance across multiple API keys with round-robin, least-loaded, or weighted strategies |
| Response caching | Redis or local SQLite cache to reduce costs and latency |
| Guardrails | Content filtering and safety checks on requests/responses |
| Usage tracking | Per-user and per-model token counting, pricing, and billing |
| Admin dashboard | Web UI and REST API for managing providers, models, and usage |
| Prometheus metrics | /metrics endpoint for monitoring with Grafana |
| Token optimization | Token saver reduces token usage on long conversations |
| Workflows | Automate multi-step LLM pipelines |
| Authentication | API key-based auth, optional master key for admin |
| Anthropic ingress | Native Anthropic API format support alongside OpenAI format |
Aurora uses a 3-layer config chain: code defaults → config.yaml → environment variables (env vars win).
The image ships with ${VAR:-default} syntax throughout. Override any setting at runtime without rebuilding:
| Env Variable | Default | Description |
|---|---|---|
PORT | 8080 | HTTP server port |
BASE_PATH | / | URL path prefix for reverse proxy |
AURORA_MASTER_KEY | (none) | Admin API key (empty = no auth) |
SQLITE_PATH | data/aurora-oss.db | SQLite storage path |
STORAGE_TYPE | sqlite | Storage backend (sqlite or redis) |
LOG_FORMAT | (auto) | Log format: json or text |
LOG_BODIES | false | Log request/response bodies |
LOGGING_ENABLED | false | Enable structured logging |
| Env Variable | Default | Description |
|---|---|---|
METRICS_ENABLED | false | Enable Prometheus metrics at /metrics |
METRICS_ENDPOINT | /metrics | Metrics endpoint path |
GUARDRAILS_ENABLED | false | Enable content guardrails |
USAGE_ENABLED | true | Enable usage tracking and pricing |
COMBOS_ENABLED | true | Enable model combos/routing |
TOKEN_SAVER_ENABLED | false | Enable token optimization |
ADMIN_ENDPOINTS | true | Enable admin API and dashboard |
MODELS_ENABLED_BY_DEFAULT | true | Auto-register provider models |
EDITION | oss | Edition tag |
| Env Variable | Default | Description |
|---|---|---|
MODEL_LIST_URL | (none) | URL to fetch model list |
MODEL_LIST_LOCAL_PATH | data/models.local.json | Local model list path |
MODEL_LIST_USER_OVERRIDES_PATH | data/user_pricing.yaml | User pricing overrides |
MODEL_REFRESH_INTERVAL | 3600 | Model list refresh interval (seconds) |
| Env Variable | Description |
|---|---|
OPENAI_API_KEY | OpenAI API key |
OPENAI_BASE_URL | Custom OpenAI-compatible endpoint |
ANTHROPIC_API_KEY | Anthropic API key |
ANTHROPIC_BASE_URL | Custom Anthropic endpoint |
GEMINI_API_KEY | Google Gemini API key |
GROQ_API_KEY | Groq API key |
XAI_API_KEY | xAI (Grok) API key |
ZAI_API_KEY | Z.ai API key |
ZAI_BASE_URL | Custom Z.ai endpoint |
ORACLE_API_KEY | Oracle AI API key |
ORACLE_BASE_URL | Oracle OpenAI-compatible endpoint |
VLLM_API_KEY | vLLM API key (optional) |
VLLM_BASE_URL | vLLM endpoint URL |
Mount your own config.yaml for full control:
docker run -d -p 8080:8080 \
--name aurora \
-v $(pwd)/my-config.yaml:/app/configs/config.yaml \
-e AURORA_MASTER_KEY=your-admin-key \
aurorahq/aurora:1.0.30
A full Helm chart is available for production deployments.
# Clone or add the Helm chart
helm install aurora ./helm \
--namespace aurora --create-namespace \
--set image.tag=1.0.25 \
--set providers.openai.apiKey=sk-... \
--set providers.openai.enabled=true \
--set redis.enabled=true
helm install aurora ./helm \
--namespace aurora --create-namespace \
--set image.tag=1.0.25 \
--set providers.groq.apiKey=gsk_... \
--set providers.groq.enabled=true \
--set redis.enabled=false \
--set auth.masterKey=""
helm upgrade --install aurora ./helm \
--namespace aurora --create-namespace \
--set image.tag=1.0.25 \
--set auth.masterKey=your-secure-master-key \
--set providers.openai.apiKey=sk-... \
--set providers.openai.enabled=true \
--set providers.anthropic.apiKey=sk-ant-... \
--set providers.anthropic.enabled=true \
--set redis.enabled=true \
--set replicaCount=3
# Mount custom config.yaml from a file
helm upgrade aurora ./helm \
--set-file config.content=my-custom-config.yaml
# Or use an existing ConfigMap
helm upgrade aurora ./helm \
--set config.existingConfigMap=my-aurora-config
| Parameter | Default | Description |
|---|---|---|
image.tag | (appVersion) | Docker image tag |
image.pullPolicy | IfNotPresent | Image pull policy |
replicaCount | 2 | Number of pod replicas |
server.port | 8080 | Service port |
server.basePath | / | URL path prefix |
auth.masterKey | "" | Master API key (empty = no auth) |
providers.*.apiKey | "" | Provider API keys |
providers.*.enabled | false | Enable provider |
providers.*.baseUrl | "" | Custom provider URL |
redis.enabled | true | Deploy Redis subchart |
metrics.enabled | true | Enable Prometheus metrics |
securityContext.readOnlyRootFilesystem | true | Read-only root filesystem |
config.content | "" | Custom config.yaml content |
config.existingConfigMap | "" | Existing config ConfigMap |
Content type
Image
Digest
sha256:466ec5392…
Size
15.4 MB
Last updated
about 20 hours ago
docker pull aurorahq/aurora