Portable by design. No lock-in.

The control plane
between your ecosystem
and any provider.

Plexsphere makes a heterogeneous, multi-provider substrate (bare-metal, VMs, Kubernetes, and edge gateways, across clouds and on-prem) behave as one sovereign, coherent fabric. Identity, policy, secrets, mediated access, and provisioning, on open standards, over an encrypted WireGuard mesh of plexd agents: the socket an ecosystem of services plugs into, with no provider lock-in.

Infrastructure you can't move is infrastructure you don't control. A sovereign control plane: multi-provider, portable, no lock-in.

In one picture

Three layers. One contract.

On top, the services you build. In the middle, plexsphere — one identity, one network, one policy, one secret store, one mediated-access and one provisioning model. Underneath, any substrate, from sovereign cloud to hyperscaler to the bare-metal rack in the back. Swap the bottom layer; the top never notices.

Open standards, no lock-in OIDC ReBAC KRM / Crossplane WireGuard OpenAPI IdP-delegated auth Self-hostable Per-Domain signing key
Why a control plane

Heterogeneity has a cost. Plexsphere absorbs it.

Every cloud, every edge tier, every cluster exposes a different surface. Without a unifying control plane, each service has to be qualified per provider, so reach fragments, and the few players who can absorb that cost win. Plexsphere makes the substrate homogeneous enough to build on once and run anywhere.

the problem

Leaky abstraction

Provider APIs, identity systems, network models and credential stores all differ. The abstraction always leaks (GPUs, storage classes, IAM), and the leak lands on whoever builds on top.

Result: per-provider qualification, fragmented reach, lock-in by attrition.
what plexsphere does

Sufficient homogeneity

One identity model, one policy model, one provisioning model, one mediated-access model, across bare-metal, VMs, Kubernetes and edge, on any provider. The differences are reconciled below the line.

Interface: OIDC · ReBAC · KRM / Crossplane · OpenAPI · WireGuard. Open, not proprietary.
the outcome

Build once, run sovereign

Services target the Plexsphere substrate, not a vendor. Near-zero cost of qualification, portable across providers and jurisdictions, self-hostable end to end.

Invariant: no single provider owns the fabric, the identity realm, or the keys.

Where lock-in hides, and where Plexsphere removes it

Identity

Provider IAM owns your users and roles. Plexsphere federates identity via OIDC and delegates auth to your IdP: no passwords, no per-cloud rewrite.

OIDC
Network

Provider VPCs and SDN own your topology. Plexsphere runs its own end-to-end encrypted WireGuard mesh: the same fabric on any provider.

WireGuard
Credentials

Secrets pinned to one provider's KMS lock you in. Plexsphere keeps OpenBao as the root of trust: synced out, never stored in plexsphere's DB.

OpenBao
Provisioning

Proprietary IaC ties you to one API. Plexsphere provisions through versioned KRM / Crossplane Compositions: portable Blueprints, not vendor scripts.

KRM
One substrate, edge to cloud

A continuum, not a fleet.

VMs in a sovereign cloud VPC. Bare-metal in a national colo. Kubernetes clusters across providers. Edge devices behind residential NAT. On-prem, far edge, near edge, regional edge, cloud. Plexsphere treats every tier and every provider as one first-class Resource model.

on-prem far edge near edge regional edge cloud multi-provider
Bare-metal

Token-driven enrollment for racks plexsphere doesn't provision itself. Systemd guidance, reconciliation target, no surprises.

adopted
Virtual machine

Cloud-Init injects the bootstrap token. Full lifecycle when provisioned via a Blueprint, plain enrollment when adopted.

provisionedadopted
Kubernetes

DaemonSet rollout, PlexdHook CRD discovery, audit-log ingestion. Optional managed-push per Domain.

provisionedadopted
Bridge / Gateway

Relay fallback for NAT-bound peers, public-ingress, site-to-site VPN, and operator-grade user-access providers.

provisionedadopted
Three planes. One trust model.

Plexsphere is the control plane. Strictly not the data plane.

The distinction matters: claims like "plexsphere never sits in the data plane" are only precise under this taxonomy, and the browser-based terminal sits firmly in the session plane, not the data plane.

is

Control

Config, signed events, policy, capability reports, session issuance, observability ingest, audit. Low bandwidth, high sensitivity.

Participants: plexsphere ↔ plexd (HTTPS + SSE); plexsphere ↔ operator (Dashboard · CLI · REST).
may mediate

Session

Operator-initiated access of kind ssh · k8s · tcp. JWT-authenticated, ReBAC-checked, short-lived, audited.

Participants: Operator client ↔ plexsphere ↔ target plexd.
never on

Data

Workload traffic between mesh members, encrypted end-to-end via WireGuard. Plexsphere has neither the keys nor the routing to participate.

Invariant: a compromise of plexsphere cannot read or inject inter-node traffic.
Domain · Project · Resource

Hard isolation at the Domain. Ownership at the Project.

Inspired by OpenStack Keystone. One Domain owns one mesh fabric, one identity realm, and (in SaaS) its own Ed25519 signing key. Below that, Projects are the day-to-day unit of ownership and policy.

  • per-DomainOIDC IdP bindings: 2FA / OTP / WebAuthn always delegated to the IdP.
  • per-ProjectPolicies, secrets, bootstrap tokens, Crossplane namespace.
  • per-ResourceOne plexd-managed Node. Origin: provisioned or adopted.
System · plexsphere instance
└── domain:acme · mesh 10.42.0.0/16 · Azure AD + Google
    ├── identities alice · bob · ci-runner
    ├── idp-bindings azure-ad · google-workspace
    └── project:prod
        ├── resource:web-01 vm · hetzner-fsn1
        ├── resource:prod-k8s k8s · aws-eks-us-east-1
        ├── resource:lax-bridge bridge · relay + public ingress
        ├── policies 3 active · label-targeted
        ├── secrets 11 · NSK-wrapped on delivery
        └── bootstrap-tokens 1 pending · ttl 10m
user:alice admin → project:acme/prod
group:sre@acme operator → project:acme/prod
project:acme/prod uses → credential:hetzner-prod
user:bob viewer → domain:acme
service:ci-runner deploy → resource:acme/prod/web-01
Access model

Authorisation as a relation graph.

Permissions are (subject, relation, object) tuples that flow along the Domain → Project → Resource hierarchy. Identities can span Domains. Groups are first-class: manually managed or IdP-synced from the OIDC groups claim.

Plexsphere never stores passwords and never runs its own second factor. 2FA, OTP, WebAuthn, and step-up auth are always handled by the IdP and consumed via the standard amr/acr claims.

Provisioning

Provision the substrate, not just manage it.

Crossplane drives cloud APIs on plexsphere's behalf inside a Project-dedicated namespace of an assigned management cluster. OpenBao is the root of trust for cloud credentials; ESO syncs them into the namespace. Rotation in OpenBao propagates without human hands.

New Resources enrol into the mesh the moment they boot; the Blueprint bakes the bootstrap token into Cloud-Init, DaemonSet, or Helm values.

Blueprints are versioned Crossplane Compositions Cloud Credentials in OpenBao, never in plexsphere's DB One Crossplane namespace per Project
1
Pick a Blueprint
hetzner-vm-node, aws-eks-cluster-daemonset, openstack-vm-node, bridge-gateway-public-ipv4, …
2
Supply parameters
Size, region, labels, optional overrides. Plexsphere materialises a Composite Resource in the Project's namespace.
3
ESO syncs the credential
A Cloud Credential from OpenBao is projected as a Kubernetes Secret for the matching ProviderConfig. Rotation flows automatically.
4
Crossplane reconciles
Provider creates the VM, cluster, or bridge. Cloud-Init / DaemonSet / Helm carries a one-time bootstrap-token.
5
plexd enrolls on first boot
The Node receives its mesh IP, NSK, peer set, and signed policy. Capability manifest reported back upstream.
Ecosystem on top

The socket an ecosystem plugs into.

Plexsphere is not the destination; it is the standardized interface between the services people actually run and the infrastructure underneath. Build a service against the substrate once; it stays portable across providers, regions, and jurisdictions.

One identity, every stack

OIDC-federated identities and ReBAC authorisation flow Domain → Project → Resource. Services consume the same identity model on any provider, with no per-cloud IAM rewrite.

Interoperability & portability

KRM / Crossplane provisioning, signed events over SSE, an OpenAPI surface generated from the source of truth. The same contract whether the substrate is one provider or many.

Sovereign by design

Per-Domain signing keys, IdP-delegated auth, secrets wrapped per node, full self-host. No provider, and no platform operator, sits in the data path or owns the trust anchors.

Surfaces

Dashboard. CLI. REST API.

Everything the Dashboard can do, plexctl and the REST API can do too. No second-class surface, no behind-the-scenes private endpoints.

Dashboard

A full-featured operator UI built on one design system. Identities, Resources, Policies, Sessions, Audit, Provisioning: every quadrant of the platform.

# open the dashboard $ open https://acme.plexsphere.example

plexctl

Scriptable, predictable. Same authorisation model as the dashboard. Pipe outputs, drive CI, automate the boring parts.

$ plexctl resource provision \ --blueprint hetzner-vm-node \ --project acme/prod \ --name web-04 \ --label tier=web,env=prod

REST API

Versioned under /v1, with an OpenAPI surface generated from the source of truth. Signed-event semantics surface as a normal SSE stream.

POST /v1/projects/acme/prod/resources Authorization: Bearer <oidc-token> Content-Type: application/json { "blueprint": "hetzner-vm-node", "name": "web-04" }
Capabilities · Subsystems

What plexsphere does, and what's behind it.

Deliberately boring at the edge. Opinionated in the center. plexd is a thin, deterministic reconciliation agent; plexsphere owns the model, the schedule, and the trust anchors. Bounded contexts, not a tangle of services.

Identity & bootstrap

Issue Domain-scoped identities and short-TTL bootstrap tokens. Resources enrol on first boot via Cloud-Init, DaemonSet, or manual injection.

OIDCbootstrap-tokenReBAC

Peer & key mesh

Pairwise PSKs, Curve25519 rotation, NAT endpoint tracking, and pre-computed relay-fallback assignments per node.

WireGuardPSKCurve25519

Signed event bus

Per-node long-lived SSE streams with Ed25519-signed envelopes, nonce/timestamp replay protection, and reconciliation-pull fallback.

SSEEd25519Last-Event-ID

Signing service

Per-Domain Ed25519 signing key (SaaS) or shared platform key (self-hosted). HSM / KMS-backed. Rotation with transition window.

Ed25519HSM/KMS

Policy engine

Declarative L3/L4 policy scoped to a Domain's mesh IPs, compiled to per-node rulesets and pushed via signed policy_updated events.

L3/L4label-targeted

Mediated access

Short-lived, JWT-bound, audited access of kind ssh / k8s / tcp, through the mesh, never via public exposure.

SSHkubectlTCP

Action orchestration

Trigger built-in or hook-based actions on one node or a label-selected fleet. Collect results, track per-node capability inventories.

execution_idcapability-gated

Capability registry

Per-node capability manifests (built-in actions, declared hooks, PlexdHook CRDs). Drift detection gates scheduling.

manifestdrift-detect

Secret delivery

Secrets are stored encrypted at rest and delivered wrapped in the target node's NSK. Plaintext is never persisted on the node side.

NSK-wrappedper-node

Node state

Platform-owned metadata + data, agent-owned reports. Delivered over signed SSE with reconciliation-pull fallback.

metadatareports

Label registry

Schema'd labels at Platform / Domain / Project scope. Selectors target policies, bulk actions, observability scopes, and cloud-tag propagation.

selectorsmulti-scope

Observability ingest

Batched metrics, logs, and audit events flow inbound. Dashboards, alerting, and long-term retention sit on top of one consistent stream.

metricslogsaudit

Artifact registry

Versioned plexd binaries, Sigstore-signed, with Fulcio cert + Rekor inclusion proof. Drives the service.upgrade action.

SigstoreRekor

Audit log

Every administrative action recorded. Tamper-evident chain. Built for SIEM export, not retro-fitted.

SIEMchain-of-custody
Digital sovereignty

Sovereign by design, not by label.

No provider owns the fabric, the identity realm, or the keys. Build your ecosystem on a substrate you can self-host, audit, and move across providers and jurisdictions, on open standards, with no lock-in.