Skip to content

Architecture

Control plane

The control plane sets up and runs a mountOS deployment. It stands up one HUB. Operators administer the HUB through the open-source admin SDK or the admin client. The control plane provisions accounts and regions. It deploys the in-region services that register back with the HUB. It publishes the HUB domain as the single discovery URL for every client.

How the system fits together
Vendor (control plane)Vendoroperatorsand in-house systemsholds the admin Ed25519signing key (mints the JWTs)mountos-admin-sdkTypeScript, Go, Rust · open sourcemountos-admin-clientSPA + Bun backend · open sourceoperator-run · 3-hop Ed25519 chainuse directlylaunch via token URLHUB (one per deployment)Global HUBhubAdmin API · /api/v1/*authn, accounts, discoveryN instances, HAAdmin DBaccounts, users, regions, metadata clustersHub vaultsigning keys · verifier setstand up: hub + control DB + Hub vaultEd25519 JWTbackend → service JWTData plane (per region)Region · eu-west-1belongs to one accountMetadata cluster · unodefault, auto-created with the regionmetadata · replicated clustergc+ metadata clustersadd more to spread theregion's volume load· · ·one Region DB · one Region vault, shared by every metadata clusterBlock storageoptional, low-latencyObject storageexternal · S3-like · one or manybacked bymountOS clientsfilesystem · S3 · HDFS · CSIdiscover their volume at theHUB domain, then pin to theowning metadata cluster for the sessiondeploy services: REGION_CLUSTER_IDregister · heartbeatdiscover (HUB domain)data: to the owning metadata clusterThe HUB domain is the single discovery URL every mountOS client is given.data pathauthenticated admin callsetup, discovery, and registration

The pieces

  • HUB (control nodes): one per deployment. It owns the admin database and the Hub vault. It serves the Admin API at /api/v1/*. It authenticates everything. It answers discovery.
  • mountos-admin-sdk(opens in new tab): the open-source connector to the HUB, in TypeScript, Go, and Rust. It authenticates to the Admin API with the admin key. Integrate through the package, the REST API (api.md), or a client that you generate from the API spec (api.yaml). The repository also includes an agent skill file, SKILL.md.
  • mountos-admin-client(opens in new tab): the open-source admin dashboard. It is a single-page application with a small backend. The backend terminates the authentication chain. It reverse-proxies the Admin API to the HUB.

Two ways to administer

After the HUB starts, all administration goes through its Admin API. The SDK and the dashboard both connect to the HUB's appserv URL. Both authenticate with the admin key. Neither one starts the HUB. Each administers a HUB that already runs.

  • SDK directly. Call mountos-admin-sdk directly to reach /api/v1/* on the HUB. The SDK needs no UI.
  • Admin client. Mint a short-lived token and give it to an operator as a login URL (https://<dashboard>?token=...). The admin-client backend verifies the token and issues a session. From then on, it proxies the Admin API to the HUB. The browser never holds a long-lived service credential.

Set up a deployment

The same control plane turns a fresh deployment into one that serves clients.

  1. Set up the HUB. Deploy appserv with its admin database and Hub vault. Seed the vault with the HUB's signing key and the admin verification key. See Vault and handshake.
  2. Administer the HUB. Reach the Admin API with the SDK directly, or launch the admin client with a short-lived token URL.
  3. Provision. Create accounts, users, and storages. An account is the tenant. It owns its regions, users, and storages.
  4. Create a region. This step writes only a control-plane record, the region's structure in the admin database. It starts no servers or instances. It automatically creates the region's default metadata cluster, named uno. That metadata cluster is not ready until a service registers. You provision the region's real infrastructure separately, in the next step.
  5. Set up the region. Deploy the in-region metadata nodes with the metadata cluster's REGION_CLUSTER_ID plus the region's database and vault. They self-register with the HUB. The first registration flips uno to ready. The HUB can then assign volumes to it. You provision block storage separately. See Deploy.
  6. Give clients the HUB domain. Publish the HUB domain as the discovery URL. Every mountOS client resolves its volume's region and metadata cluster there. It then connects to that metadata cluster for the session.

The HUB domain is the discovery URL

A client holds no region or metadata cluster address. It knows only the HUB domain. It resolves everything else from that domain at connect time. This design keeps the client configuration stable. Operators can add regions and metadata clusters. A volume can move between metadata clusters. The next discovery call simply returns the new owner. See Metadata clusters for how a volume maps to its owning metadata cluster.

to navigate to open