Skip to content

Set up

Admin SDK and dashboard

The HUB's Admin API drives accounts, users, regions, storages, volumes, and access keys. It is reached with the Admin SDK or over REST.

Authentication

Requests are signed with the admin key. appserv verifies each signature against PROVIDER_VERIFICATION_KEY. Only backends hold the admin key, so it never reaches a browser.

The admin key stays in backends, never in a browser
Your systemMOUNTOS_SDK_SIGNING_KEYDashboard frontendopaque session tokenDashboard backendMOUNTOS_SDK_SIGNING_KEYAdmin SDK / RESTsigns the requestappserv · HUBverifies withPROVIDER_VERIFICATION_KEYsigned · DASHBOARD_SIGNING_KEY

Two key pairs are in play. The admin key (MOUNTOS_SDK_SIGNING_KEY, verified by appserv against PROVIDER_VERIFICATION_KEY) authorizes Admin API calls. The dashboard session pair (DASHBOARD_SIGNING_KEY and DASHBOARD_VERIFICATION_KEY) backs the opaque token the dashboard browser holds.

User-level authorization is carried separately, signed with a dedicated DASHBOARD_USER_HMAC_KEY shared only between the dashboard backend and appserv. It is a distinct secret from the public PROVIDER_VERIFICATION_KEY, so the two authorization scopes stay separate.

SDK

The SDK is open source, with TypeScript, Go, and Rust packages generated from one API spec. All three expose the same resource groups. Accounts, users, regions and clusters, storages, volumes with forks and API keys, audit logs, nodes, client sessions, alerts, license, vault, discovery, and the dashboard. The packages are versioned together with the API, and the npm package ships a SKILL.md with version-matched guidance for AI agents. Source and reference live in the admin SDK repository.

sh
npm i @mountos-io/admin-sdk
ts
import { createServerClient } from '@mountos-io/admin-sdk'

const client = createServerClient({
  baseUrl: 'https://hub.example.com',
  privateKey: process.env.MOUNTOS_SDK_SIGNING_KEY!,
})

const { id } = await client.accounts.create({ name: 'mountOS' })

REST

The API is served under /api/v1 on the HUB domain. Each request carries a bearer token in the Authorization header. The token is a JWT signed with the admin key. The SDKs mint it automatically. For direct REST, every route and the token claims are documented in api.md in the SDK repository.

sh
curl https://hub.example.com/api/v1/accounts/list \
  -H "Authorization: Bearer $JWT"

Other languages

The API spec, api.yaml, is the source the three packages are generated from. Use it to generate a client in any other language, or contact support@mountos.io.

Dashboard

The admin dashboard is an optional UI over the same Admin API. Anything it does is also an SDK or REST call.

It runs as a browser frontend with a small backend gateway. The gateway holds the admin key and signs requests. The browser holds only a short-lived opaque session token. The dashboard is open source as mountos-admin-client.

to navigate to open