Skip to content

Set up

Admin SDK and dashboard

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

Authentication

Backends sign requests with the admin key. appserv verifies each signature against PROVIDER_VERIFICATION_KEY. Only backends hold the admin key. 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 requesthubverifies withPROVIDER_VERIFICATION_KEYsigned · DASHBOARD_SIGNING_KEY

mountOS uses two key pairs here. The admin key (MOUNTOS_SDK_SIGNING_KEY, which appserv verifies against PROVIDER_VERIFICATION_KEY) authorizes Admin API calls. The dashboard session pair (DASHBOARD_SIGNING_KEY and DASHBOARD_VERIFICATION_KEY) backs the opaque token that the dashboard browser holds.

mountOS carries user-level authorization separately. A dedicated DASHBOARD_USER_HMAC_KEY signs it. Only the dashboard backend and appserv share that key. DASHBOARD_USER_HMAC_KEY is a distinct secret from the public PROVIDER_VERIFICATION_KEY. The two authorization scopes stay separate.

SDK

The SDK is open source. One API spec generates its TypeScript, Go, and Rust packages. All three expose the same resource groups:

  • Accounts and users
  • Regions and metadata clusters
  • Storages and volumes, with forks and API keys
  • Audit logs
  • Nodes and client sessions
  • Alerts
  • License
  • Vault
  • Discovery
  • The dashboard

mountOS versions the packages together with the API. The npm package also ships a SKILL.md with version-matched guidance for AI agents. The admin SDK repository has the source and reference.

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

appserv serves the API under /api/v1 on the HUB domain. Each request carries a bearer token in the Authorization header. The token is a JWT. The admin key signs it. The SDKs mint it automatically. For direct REST calls, api.md in the SDK repository documents every route and the token claims.

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

Other languages

The API spec, api.yaml, generates the three packages above. 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. It is published as mountos-admin-client.

A native companion, mountos-desktop(opens in new tab), is the open-source macOS menu bar and Windows system tray client. It drives the same mountos CLI to mount volumes, manage profiles, and run bulk upload, download, and HLS sink jobs. Each job keeps the CLI's own retry, resume, and status tracking. You can fork it to customize.

to navigate to open