Octelium
Unified Access Platform
A unified secure access platform with secretless access, CEL/OPA-style ABAC, OpenTelemetry-native real-time visibility, and both client-based and clientless access.
Best for
Tradeoffs
Octelium is a free and open source, self-hosted zero trust access platform. It runs entirely on infrastructure you operate, and provides clientless access to internal applications, client-based access over WireGuard and QUIC, layer-7 aware access control on a per-request basis, and dynamic secretless access.
kind: Service
metadata:
name: wiki
spec:
mode: HTTP
isPublic: true
config:
upstream:
url: http://10.0.9.20:3000
http:
auth:
bearer:
fromSecret: wiki-tokenkind: Policy
metadata:
name: api-read
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: ctx.request.http.method == "GET"
- match: '"partners" in ctx.user.spec.groups'
- match: ctx.session.status.isBrowserkind: Service
metadata:
name: site
spec:
mode: HTTP
isPublic: true
isAnonymous: true
config:
upstream:
container:
port: 8080
image: ghcr.io/acme/site:1.2.0Secure humans, workloads and AI agents with one model for identity, authorization, connectivity, credentials and visibility.
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 moreIdentity-based, application-layer aware ABAC access control with policy-as-code via CEL and OPA, applied on a per-request basis.
Read moreDynamic secretless access where teams and AI agents access protected infrastructure without ever holding a credential.
Read moreTeams, workloads and AI agents share the same model for identity management, access control, and auditing.
Read moreOpenTelemetry-native, real-time, application-layer-aware visibility and structured logging.
Read moreOctelium is administered like Kubernetes. Define your resources in YAML files, store them in a Git repository.
Read moreEach resource is protected by an identity-aware proxy that provides application-layer-aware access control, secretless access, and visibility. Users reach Services through two equivalent modes.
kind: Service
metadata:
name: wiki
spec:
mode: HTTP
config:
upstream:
url: http://10.0.9.20:3000kind: Service
metadata:
name: nats
spec:
mode: TCP
port: 4222
config:
upstream:
url: tcp://10.0.9.31:4222kind: Service
metadata:
name: corp-dns
spec:
mode: DNS
port: 53
config:
upstream:
url: dns://10.0.9.10Access is authorized on a per-request basis, using CEL or Open Policy Agent, against the identity behind the request and the content of the request itself rather than the network path it arrived on.
kind: Policy
metadata:
name: api-read
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: ctx.request.http.method == "GET"
- match: ctx.request.http.path.startsWith("/v1/")
- match: '"partners" in ctx.user.spec.groups'kind: Policy
metadata:
name: orders-create
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: ctx.request.http.method == "POST"
- match: ctx.request.http.bodyMap.amount < 5000kind: Policy
metadata:
name: sensitive
spec:
rules:
- effect: DENY
condition:
not:
match: ctx.device.status.osType in ["MAC"]
- effect: ALLOW
condition:
match: '"security" in ctx.user.spec.groups'Application-layer credentials are stored in the Cluster as Secrets and injected into the upstream connection once a request is authorized. This removes credential sprawl for teams and, increasingly, for workloads and AI agents.
kind: Service
metadata:
name: stripe
spec:
mode: HTTP
isPublic: true
config:
upstream:
url: https://api.stripe.com
http:
auth:
bearer:
fromSecret: stripe-api-keykind: Service
metadata:
name: nats
spec:
mode: TCP
config:
upstream:
url: tls://10.0.9.31:9090
tls:
clientCertificate:
fromSecret: nats-client-certkind: Service
metadata:
name: billing
spec:
mode: HTTP
dynamicConfig:
configs:
- name: finance
upstream:
url: https://api.example.com
http:
auth:
bearer:
fromSecret: apikey-finance
rules:
- condition:
match: '"finance" in ctx.user.spec.groups'
configName: financeHuman and workload Users share the same identity management, authentication, access control and visibility model. For agentic systems this matters more than it once did, because the number of non-human identities holding credentials grows faster than the number of people.
kind: Service
metadata:
name: tools-mcp
spec:
mode: MCP
isPublic: true
config:
upstream:
url: http://10.0.9.44:8080
mcp:
endpoint: /mcp
protocol:
requireVersion: true
cors:
allowOriginStringMatch:
- https://client.example.comkind: Policy
metadata:
name: llm-limits
spec:
rules:
- effect: ALLOW
condition:
all:
of:
- match: ctx.request.llm.model == "gpt-5-mini"
- match: ctx.request.llm.maxOutputTokens < 4096
- match: '"agents" in ctx.user.spec.groups'kind: IdentityProvider
metadata:
name: gitlab-ci
spec:
oidcIdentityToken:
issuerURL: https://gitlab.com
audience: https://example.comOpenTelemetry-ready, application-layer aware, structured auditing and visibility emitted to your OpenTelemetry OTLP receivers, where they can be exported to your log management and SIEM tools.
A Cluster runs on Kubernetes and uses it to scale its own data plane, place Service proxies across Gateways, and run containerized applications that the Cluster itself deploys.
$ octeliumctl apply ./cluster
Secret: stripe-api-key Updated
Secret: wiki-token Updated
IdentityProvider: okta Updated
Policy: api-read Created
Policy: llm-limits Created
Group: partners Updated
Service: wiki Created
Service: stripe Created
Service: tools-mcp Created
Namespace: public Created
Cluster Core resources successfully applied
7 resources created
3 resources updated
ClusterConfig updatedBoth products are described from the same structured capability dataset used across this site, with the same evidentiary standard applied to each. Emerging and experimental features are marked as partial regardless of vendor.
A curated view of the dataset, including the rows where Octelium is stronger, the rows where it is not, and the rows where the two are equivalent. The complete capability matrix, with search and filters, is one click away.
Architecture
Native FIDO2 / Passkey
Native means implemented by the platform itself, not merely delegated to an external IdP.
Workload Identity
Anonymous / Public Access
SCIM Provisioning
Automated user/group lifecycle provisioning via SCIM, beyond just login-time IdP federation.
Policy Model
Policy-as-Code
Per-Request Authz
For L7 products, this means each HTTP/gRPC/API/K8s request can be evaluated. For overlays, session/connection policy is not counted as per-request. This modeling choice structurally favors L7 gateways over network overlays.
L7-Aware Policies
Zero Standing Privilege / JIT
Indicates strong architectural support for minimizing standing privilege; not an absolute claim that privileged access cannot exist.
Access Requests / Approvals
First-class request-and-approve / break-glass workflows (reviewers, time-bound grants), as opposed to static policy alone.
Device Posture
SSH
PostgreSQL
Kubernetes
RDP
DNS
WireGuard Data Plane
Whether the product's own client/data plane is built on WireGuard, versus a proprietary or TLS-based transport.
OpenTelemetry-Native
L7-Aware Access Logs
SSH Session Recording
Client-Based VPN / Overlay
Clientless Browser Access
Workload OAuth2 / Bearer
Private DNS
Dynamic Credential Selection
Secretless SaaS API Access
AI / LLM Gateway
MCP Gateway / MCP Access
Deploy Containers / PaaS
High Availability
Fully Self-Hosted
Server Code Open Source
No Mandatory Proprietary Cloud
Data Sovereignty
Unified Access Platform
A unified secure access platform with secretless access, CEL/OPA-style ABAC, OpenTelemetry-native real-time visibility, and both client-based and clientless access.
Best for
Tradeoffs
Edge SASE / ZTNA
Extremely strong global edge/SASE product; less comparable to Octelium where deep self-hosted L7 protocol semantics, secretless app credentials, and data sovereignty are primary requirements.
Best for
Tradeoffs
The same platform capabilities ship with every deployment, whichever way you use it.
Clientless, identity-aware access to internal applications for humans in a browser and for workloads over OAuth2.
Read morePublish a local service on your own domain and your own infrastructure, with identity and policy in front of it.
Read morePer-request authorization, secretless upstream credentials, rate limits and schema validation in front of your APIs.
Read moreFree and open source. Self-hosted. No vendor lock-in.