Octelium is a self-hosted AI gateway for controlled access to model providers and self-hosted inference. Authenticate every human, application and AI agent, authorize each inference request with identity-aware policy, keep provider credentials out of applications, enforce prompt, tool and token controls, and record structured LLM audit data.
Unified identity management for humans, workloads and AI agents
Adaptive authentication for humans and non-human identities
Identity-based, application-layer-aware access control
OpenTelemetry-native real-time visibility and auditing
Unified access architecture for private and SaaS resources
Every request from a human, a browser, a CLI, a workload or an AI agent is authenticated against your identity providers, authorized per request at the application layer by the Octelium Service in front of the resource, exported to your SIEM and observability stack whether it is allowed or denied, and only then routed to the upstream HTTP API, database, SSH server, Kubernetes cluster, LLM or MCP server.
Identity-aware access control
Control who can use each model and what they can ask it to do
Every request is associated with an authenticated Octelium User. Authorization evaluates that identity together with normalized inference context before the request reaches the provider.
Apply LLM-aware controls to every inference request
Octelium understands the semantics of supported LLM protocols instead of treating inference as opaque HTTP. Inference-aware plugins provide a common control layer for safety, model selection, usage limits and optimization.
Keep model-provider credentials out of applications and agents
Applications authenticate to Octelium with their own identity instead of receiving a shared provider key. After authorization, the gateway supplies the credential required by the selected upstream and prevents downstream authentication material from being forwarded to the provider.
Connect applications to OpenAI, Anthropic, Gemini and Bedrock through one gateway
Octelium natively understands all four supported inference protocols and can translate between them in any direction. Applications can keep the API format that fits them while the gateway selects a different provider or protocol upstream.
Supported providers include OpenAI, Anthropic, Gemini, Amazon Bedrock, Mistral, Meta AI, DeepSeek, Kimi, Grok, Qwen, Z.AI and Ollama.
AI observability and audit
Trace AI usage by identity, model, policy, tool and token
Every LLM Service emits structured, inference-specific AccessLogs linked to the authenticated User, Session, Service and authorization decision. Investigate individual requests or aggregate usage across identities, applications, models and policies.
Route models intelligently and control inference consumption
LLM-native plugins let platform teams optimize model usage without moving those decisions into every application. Routing, caching and token controls can use the same identity and request context as access policy.
MCP gateway, Managed containers: Deploy and scale the MCP server itself inside the Cluster. finance-mcp.yaml reads as follows.
kind: Service
metadata:
name: finance-mcp
spec:
mode: MCP
config:
upstream:
container:
image: ghcr.io/acme/finance-mcp:1.4.0
port: 8080
replicas: 3
resourceLimit:
cpu:
millicores: 1000
memory:
megabytes: 2000
mcp:
endpoint: /mcp
replicas: 3: 3/3 ready
Self-hosted deployment
Run the AI gateway on infrastructure you control
Octelium runs on Kubernetes and does not require a hosted control plane in the inference request path. Keep the gateway, provider credentials and audit stream inside your own cloud or on-premises environment.
Cluster resources applied declaratively from YAML with octeliumctl and managed programmatically with the Go, TypeScript, Python and Rust SDKs
GitOps: cluster.yaml in the main branch of the ~/octelium repository describes the desired state of the Cluster. Its diff reads as follows, with + for added, ~ for changed and - for removed lines.
+ kind: Group
+ metadata:
+ name: payments
+ spec: {}
+ ---
+ kind: User
+ metadata:
+ name: alice
+ spec:
+ type: HUMAN
+ email: alice@acme.com
+ groups: ["payments"]
---
kind: User
metadata:
name: bob
spec:
type: HUMAN
~ groups: ["payments"]
---
kind: Service
metadata:
name: billing
spec:
mode: HTTP
config:
upstream:
~ url: http://10.0.3.24:8080
- ---
- kind: Service
- metadata:
- name: billing-legacy
- spec: ⋯
- ---
- kind: User
- metadata:
- name: john
- spec: ⋯
~/octelium ❯ octeliumctl apply --prune .
Group: payments Created
User: alice Created
User: bob Updated
Service: billing.default Updated
Service: billing-legacy.default Deleted
User: john Deleted
Cluster Core resources successfully applied
2 resources created
2 resources updated
2 resources deleted
Go: main.go uses the octelium-go SDK to list the Users of the Cluster and update the email and Policies of linus.
Authorization, provider authentication, routing, inference controls and audit records operate on the same authenticated and normalized request context.
01
Identity and context
Human and workload identity, groups, session type, device posture and request attributes meet in one CEL or OPA authorization decision.
A static value, CEL expression, Rego result or ordered plugin can choose the effective model and a portable reasoning level, exact token budget or provider-native effort.
Which AI providers and APIs does Octelium support?
The LLM mode natively understands OpenAI, Anthropic, Gemini and Amazon Bedrock protocols and can translate between any of the four in either direction. It covers generation, streaming, embeddings, token counting, moderation and model discovery where the selected protocol exposes those operations. OpenAI-compatible servers such as vLLM and Ollama can also be used when they expose the supported OpenAI API surface.
What makes the AI gateway identity-aware?
Every request is tied to an Octelium human or workload User instead of relying on a shared provider key. Policies combine that identity, group membership, session type and device posture with normalized LLM attributes such as operation, requested model, streaming, modalities, tools and declared output tokens. The same context can choose an upstream account, model, reasoning level and plugin configuration dynamically.
Can Octelium route requests to different models dynamically?
Yes. Model and reasoning settings can be static, computed with CEL, returned by Open Policy Agent, or applied conditionally through plugins. Semantic routing classifies the meaning of a request against descriptions and examples and sends it to the best matching model. Dynamic Service configuration can additionally select a different upstream, provider account, credential, headers and complete LLM configuration.
How does token-based rate limiting work?
Token rate limiting applies a sliding-window quota to input, output or total inference tokens. Quotas can be keyed per User, per Session or by an evaluated value such as a tenant ID. Octelium reserves capacity before sending the request so concurrent requests observe one another, then reconciles the reservation with usage reported by the provider.
What does semantic caching store and how is it isolated?
The semantic cache can serve an exact repeat without an embedding call or find an earlier semantically equivalent request using vector similarity. The effective model, instructions, tools, reasoning, response schema and other execution context must still match. Cache partitions can be per Session, per User, shared or derived from context for tenant isolation. A cache hit uses no inference quota and still passes current response guardrails.
Which guardrails and prompt controls are available?
Guardrails inspect instructions, content, tool definitions, tool results and generated responses. They support RE2 patterns, built-in PII detectors and broad secret detection. Matching content can be denied, redacted, stripped or replaced where mutation is safe. Prompt plugins can prepend, append, replace, strip or reject system instructions and insert or modify user and assistant messages.
What can teams see about AI usage?
Identity-aware AccessLogs record who used which Service and model, requested and effective models, protocol, operation, routing decision, reasoning, finish reason, tools, guardrails, cache and quota outcomes, latency, time to first token and reported input, output, cached and reasoning token usage. The enterprise console aggregates these fields into trends, breakdowns and top users, models and tools.
Is Octelium self-hosted and horizontally scalable?
Yes. Octelium is free and open source, has no mandatory hosted control plane and runs on Kubernetes infrastructure you control. Production deployments distribute the data plane across Gateway nodes and scale it horizontally with Kubernetes. The same Cluster can deploy and scale containerized self-hosted inference servers as managed Service upstreams.
Do applications receive the upstream provider credentials?
No. Applications authenticate to Octelium with their own identity. Provider bearer tokens, custom API keys, OAuth2 client credentials, basic credentials and AWS SigV4 secrets stay in the Cluster and are injected only after authorization.