Open source zero trust access, for every resource your team reaches
Octelium is a free and open source, self-hosted zero trust access platform for humans, workloads and AI agents. The pages below are the same Cluster described from different starting points: the architecture you are building, the resource you need to reach, the AI workload you are running, or the product you are replacing.
- Free and open source
- Designed for self-hosting
kind: Service
metadata:
name: hr-app
spec:
mode: HTTP
config:
upstream:
url: http://10.0.3.18:8080kind: Service
metadata:
name: bastion
spec:
mode: SSH
port: 22
config:
upstream:
url: ssh://10.0.2.14
ssh:
user: deploy
auth:
privateKey:
fromSecret: bastion-keykind: Service
metadata:
name: pg-prod
spec:
mode: POSTGRES
port: 5432
config:
upstream:
url: postgres://10.0.4.21:5432
postgres:
user: analytics_ro
database: analytics
auth:
password:
fromSecret: pg-passwordkind: Service
metadata:
name: tools-mcp
spec:
mode: MCP
isPublic: true
config:
upstream:
url: http://mcp.internal:8080
mcp:
endpoint: /mcp
protocol:
versions: ["2026-07-28"]kind: Service
metadata:
name: openai
spec:
mode: LLM
isPublic: true
config:
upstream:
url: https://api.openai.com
llm:
protocol: OPENAI
auth:
bearer:
fromSecret: openai-api-keyFind the page that matches what you are doing
Four ways in, depending on what brought you here. Every page describes the same platform, so nothing below is a different product or a different deployment.
By access architecture
06Start here if the shape of the deployment is what you are deciding: whether people connect over a tunnel, reach applications from a browser, or both at the same time.
Zero trust network access
The platform end to end: per-request, layer-7 aware access control for every resource a team reaches.
Business and remote access VPN
A corporate VPN with single sign-on and device posture, where the tunnel is transport and every request is still authorized.
BeyondCorp architecture
Clientless access through an identity-aware proxy, for people in a browser and for workloads over OAuth2.
WireGuard remote access
Zero-config WireGuard with one stable route, stable dual-stack private addresses and automatic private DNS.
QUIC remote access
An additional QUIC-based tunneling mode alongside WireGuard, with everything above the transport identical.
Secure tunnels and reverse proxy
Reach resources behind NAT in any environment and publish them on your own domain, with no inbound ports opened.
By the resource you need to reach
08Start here if a specific protocol or platform is the problem: the credentials it needs, who is allowed to use it, and what ends up in the audit trail.
SSH
Secretless SSH with no keys to distribute and no PKI to operate, with per-request policy and session recording.
Kubernetes
Per-verb, per-resource and per-namespace authorization of the Kubernetes API, with no kubeconfig handed to anyone.
PostgreSQL and MySQL
Passwordless database access with the upstream account chosen per identity, and every query recorded.
AWS resources
Private VPC resources, RDS, S3, Lambda and EKS, reached without distributing IAM keys to people or workloads.
SaaS APIs
Access to third-party APIs where the API key stays in the Cluster and is injected after the request is authorized.
API gateway
Authorization on the whole layer-7 request, secretless upstreams, dynamic routing and request plugins.
Deploying applications
Deploy, scale and serve containerized applications, with TLS, domains and access control from the same platform.
Homelab
Remote access and public hosting from behind NAT at home, with no port forwarding and no dynamic DNS.
For AI agents and models
03Start here if the identities holding your credentials are increasingly not people. Agents, MCP servers and inference traffic sit in the same identity, authorization and auditing model as everything else.
AI gateway
A gateway to OpenAI and Anthropic APIs with per-request control over models and tools, and secretless provider keys.
MCP gateway
Per-request authorization of JSON-RPC methods, individual tool calls and the arguments passed to them.
Infrastructure for AI agents
Agents get their own identity, secretless access to the resources they use, and a complete audit trail.
Replacing a product you already run
07Start here if you are evaluating against something specific. Each page sets out the capability matrix side by side and describes what Octelium does, in the same terms.
Tailscale alternative
Self-hosted, with layer-7 aware policy-as-code, secretless access and clientless access alongside the tunnel.
Teleport alternative
Secretless SSH, Kubernetes and database access with layer-7 aware policy-as-code and auditing, self-hosted.
Cloudflare Access alternative
Clientless BeyondCorp access on infrastructure you operate, with policy-as-code and secretless upstreams.
Cloudflare Tunnel alternative
Publish resources behind NAT with no inbound ports, on your own domain and your own infrastructure.
ngrok alternative
Publish a local service on your own domain, with identity, policy and auditing sitting in front of it.
Fortinet ZTNA alternative
Layer-7 aware policy-as-code and secretless access, with no appliance and no per-agent licensing.
StrongDM alternative
Secretless access to SSH, databases and Kubernetes with policy-as-code and session recording, self-hosted.
A unified secure access platform
Whichever page above matches your situation, this is what the Cluster underneath it provides.
- Unified access platform
One architecture for client-based zero-config VPN-like access over WireGuard and QUIC tunnels and clientless access over browsers for humans and OAuth2 access for workloads.
Read more - L7-aware access control
Identity-based, application-layer aware ABAC access control with policy-as-code via CEL and OPA, applied on a per-request basis.
Read more - Secretless access
Dynamic secretless access where teams and AI agents access protected infrastructure without ever holding a credential.
Read more - Unified identity management
Teams, workloads and AI agents share the same model for identity management, access control, and auditing.
Read more - Real-time visibility and auditing
OpenTelemetry-native, real-time, application-layer-aware visibility and structured logging.
Read more - GitOps-friendly management
Octelium is administered like Kubernetes. Define your resources in YAML files, store them in a Git repository.
Read more
Everything is a Service, whatever it speaks
A Service is a protected resource plus the identity-aware proxy that serves it. The proxy understands the protocol, which is what makes authorization, credential injection and auditing possible at the application layer rather than at the connection.
- Protocol-aware modes cover HTTP, gRPC and web applications, SSH, Kubernetes, PostgreSQL and MySQL, MCP and LLM providers, DNS, SOCKS5, RDP, and plain TCP and UDP.
- The upstream can sit anywhere: a private network behind NAT, a cloud VPC, a machine at home, a SaaS API on the public internet, or a container the Cluster deploys itself.
- The same Service is reached over the tunnel and, when published, from a browser or by a workload over standard OAuth2, without being configured twice.
- Services are grouped into Namespaces, which carry their own Policies, so a whole environment can be governed with one rule.
kind: Service
metadata:
name: metrics
spec:
mode: HTTP
config:
upstream:
url: http://10.0.3.44:9090kind: Service
metadata:
name: metrics
spec:
mode: HTTP
isPublic: true
config:
upstream:
url: http://10.0.3.44:9090kind: Service
metadata:
name: docs
spec:
mode: WEB
isPublic: true
config:
upstream:
container:
port: 3000
image: ghcr.io/acme/docs:2.1.0
replicas: 3kind: Namespace
metadata:
name: internal
spec:
authorization:
policies:
- engineering
- deny-contractorsThe same authorization language for every protocol
Access is authorized per request, using CEL or Open Policy Agent, against the identity behind the request and the content of the request itself. The vocabulary changes with the protocol; the model does not.
- Identity, Group membership, device posture, session type, authentication strength, geolocation and time combine with application-layer attributes in a single expression.
- Application-layer context covers HTTP methods, paths, headers and JSON bodies, Kubernetes verbs and namespaces, database users and databases, DNS questions, MCP tools and LLM models.
- Upstream credentials stay in the Cluster and are injected once a request is authorized, so API keys, passwords, private keys and kubeconfigs are never distributed to a person or a workload.
- There is no notion of an admin or superuser User. Time-bound elevation is handled by access requests with approvals rather than by standing privilege.
kind: Policy
metadata:
name: reporting
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: ctx.request.http.method == "GET"
- match: '"analysts" in ctx.user.spec.groups'kind: Policy
metadata:
name: k8s-readers
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: ctx.request.kubernetes.verb == "get"
- match: ctx.request.kubernetes.namespace == "prod"
- match: '"sre" in ctx.user.spec.groups'kind: Policy
metadata:
name: finance-tools
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: ctx.request.mcp.method == "tools/call"
- match: ctx.request.mcp.name == "transfer"
- match: '"finance" in ctx.user.spec.groups'kind: Policy
metadata:
name: managed-devices
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: '"sre" in ctx.user.spec.groups'
- match: ctx.session.status.type == "CLIENT"
- match: ctx.device.status.osType in ["LINUX", "MAC"]kind: Policy
metadata:
name: deny-contractors
spec:
rules:
- effect: DENY
condition:
match: '"contractors" in ctx.user.spec.groups'Every request, with the identity behind it
A Cluster produces one stream of AccessLogs for everything it serves. An access review does not depend on correlating a VPN log, a bastion log, a database log and a proxy log that each name the subject differently.
- Each entry identifies the User, Session and Device alongside the Service, the decision, the Policy and rule that produced it, and the application-layer detail of the request.
- Logs are exported in real time over OpenTelemetry OTLP to the log management and SIEM providers you already operate and have already approved.
- Human and workload Users share the model, so an agent calling a tool and a person running a query appear in the same stream, in the same shape.
Declarative management on infrastructure you own
A Cluster is administered the way a Kubernetes cluster is: resources are declared in YAML, kept in a Git repository, and applied in one command that reproduces the entire Cluster state.
- Services, Policies, Namespaces, Users, Groups, Secrets and identity providers are all resources, so adding a solution from the directory above is a change to a file rather than a new deployment.
- Management is centralized over the Cluster's gRPC APIs, with an official Go SDK, so the Cluster is fully programmable and no configuration change requires SSH access to a server.
- A Cluster runs on top of Kubernetes and uses it to scale its own data plane, distribute Service proxies across the machines it runs on, and serve the containerized applications it deploys.
- The quick installer provisions a complete single-node Cluster, including Kubernetes itself, on one fresh Linux VM with a domain you own.
$ octeliumctl apply ./cluster
Secret: openai-api-key Updated
Secret: bastion-key Updated
IdentityProvider: github-actions Created
Policy: engineering Created
Policy: deny-contractors Created
Group: sre Updated
User: ci-runner Created
Service: bastion Created
Service: pg-prod Created
Namespace: internal Created
Cluster Core resources successfully applied
8 resources created
2 resources updated
ClusterConfig updatedThe same platform capabilities ship with every deployment, whichever way you use it.
Frequently asked
- What is Octelium, in one paragraph?
- Octelium is a free and open source, self-hosted zero trust access platform. Every protected resource is represented by a Service, served by an identity-aware proxy that understands the protocol in front of it. Users reach Services either over zero-config WireGuard and QUIC tunnels or clientlessly over HTTPS, and every request is authorized on its own against the identity behind it and the content of the request, then logged.
- Are these separate products?
- No. Every page here describes the same Cluster, configured differently. A single deployment can serve internal web applications, SSH servers, Kubernetes clusters, PostgreSQL and MySQL databases, SaaS and internal APIs, MCP servers and LLM providers at the same time, under one identity model, one policy language and one audit trail.
- Which page should I start with?
- If you are deciding on an architecture, start with zero trust network access, which describes the platform end to end. If a specific protocol or platform is the immediate problem, start with that page. If you are evaluating against a product you already run, the alternative pages set out a capability matrix side by side.
- Is Octelium free and open source?
- Yes. Octelium is free and open source and is designed for single-tenant self-hosting. There is no proprietary cloud-based control plane and it is not a limited edition of a separate paid product. An enterprise package is available for organizations that need capabilities such as a web console, SCIM provisioning and secret encryption at rest, and it is free for personal, homelab and evaluation use.
- Do I have to replace my identity provider?
- No. Any OpenID Connect or SAML 2.0 identity provider is supported, as well as GitHub OAuth2. Octelium additionally provides native FIDO2 and WebAuthn passkeys, TOTP and TPM 2.0 authenticators that can be required through Policy on sensitive Services, independently of what the identity provider itself enforces.
- What does it take to run one?
- An Octelium Cluster runs on top of Kubernetes, but you do not need Kubernetes experience to install, operate or use it. The quick installer provisions a complete single-node Cluster, including Kubernetes itself, on one fresh Linux VM with 2 vCPUs, 2 GB of RAM and a domain you own. Production Clusters run on scalable managed or on-premise Kubernetes installations.
Deploy Octelium on your own infrastructure in minutes
Free and open source. Self-hosted. No vendor lock-in.