Skip to content

Administration

Managing your Stratos Vault instance through the admin panel.


Overview

The admin panel is a single unified interface with two authentication tiers that control what sections are available:

TierAuth MethodHeaderSections
AdminWallet user with admin roleX-Admin-TokenUsers, Assets, Registration Codes, Daml Packages, Canton Node
SuperadminStaff account (username/password)X-Superadmin-TokenStaff, Configuration, Apps, App Access, RPC, API Endpoints

Both tiers use session tokens with 24-hour expiry.


Admin Sections

Users

View and manage wallet users.

ActionHow
View all usersUsers tab shows username, display name, role, party ID
Change roleClick user → set role to user or admin
Assign Canton partyClick Assign Party to allocate a Canton party for ledger access
Delete userRemove account and all associated data

Onboarding flow:

  1. Create a registration code (optional, for controlled sign-ups)
  2. Share the code with the user
  3. User registers via WebAuthn passkey
  4. Admin assigns Canton party (or it auto-allocates)

Assets

Configure supported blockchain assets. Each asset has:

FieldDescription
symbolToken ticker (e.g., USDC)
nameDisplay name
chainPrimary chain (Ethereum, Solana, etc.)
chain_typeProtocol type (evm, svm, btc, tron, ton)
contract_addressOn-chain contract address
decimalsToken decimal precision
is_nativeWhether it's the chain's native token

Multi-chain tokens (USDC, USDT) can have entries for each supported network via the asset chains sub-table.

Registration Codes

Control user sign-ups with one-time or multi-use codes.

FieldDescription
max_usesNumber of allowed registrations
expires_atOptional expiration date
code_typegeneral or custom type
reserved_usernameLock code to a specific username

Daml Packages

Upload and manage Canton Daml packages (DAR files):

  1. Click Upload DAR or drag-and-drop a .dar file
  2. The package is uploaded to the Canton participant
  3. Copy the returned mainPackageId for use in apps

Canton Node Info

View Canton participant connectivity — node status, version, domain ID, and Splice network users.


Superadmin Sections

Staff Management

Create and manage superadmin staff accounts.

FieldDescription
usernameLogin username
passwordHashed with PBKDF2 (100K iterations, SHA-256)
is_superadmintrue grants privilege to modify config, create API keys, manage apps
display_nameDisplay name

Only staff with is_superadmin = true can modify platform configuration. Non-privileged staff have read-only access to superadmin sections.

Configuration Overrides

Override wrangler.toml settings at runtime without redeploying:

KeyDescriptionValid Values
RP_NAMEWebAuthn relying party nameAny string
THEMEUI color themepurple, teal, blue, green, orange, rose, slate, light
ORG_NAMEOrganization display nameAny string
CHAT_AGENT_WEBHOOK_URLChat agent webhook URLURL
SPLICE_HOSTSplice validator hostHostname
CANTON_JSON_HOSTCanton JSON API hostHostname
MPC_ENABLEDEnable MPC signing"true", "false"

Set a value to null to revert to the wrangler.toml default.

Dock Apps

Manage apps available in the wallet dock:

FieldDescription
nameApp display name
iconIcon character or emoji
colorBackground color (hex, e.g., #6366f1)
urlApp URL (must support iframe embedding)
zoomIframe zoom level (10–200%)
sort_orderDisplay order
is_enabledEnable/disable without deleting

Package status — the admin panel checks if each app's Daml package is installed on the Canton participant:

StatusMeaningAction
InstalledPackage already on CantonNone needed
Install DARPackage not installedClick to install
N/AApp has no package endpointNone needed
ErrorCould not checkVerify app URL

App Access Control

Restrict which wallet users can see and use specific dock apps. By default, apps are visible to all users. Use access control to limit availability per user.

RPC Endpoints

Configure blockchain RPC providers with priority-based failover:

FieldDescription
chain_typeevm, btc, svm, tron, ton
chain_nameDisplay name (e.g., Ethereum, Base)
chain_idEVM chain ID (e.g., 1 for Ethereum, 8453 for Base)
networkmainnet or testnet
rpc_urlProvider URL
priority0 = primary, 1 = first fallback, 2 = second fallback

For production, use dedicated RPC providers (Alchemy, Infura, QuickNode, ZAN).

Scoped API Endpoints

Create API keys that provide scoped, programmatic access to the Canton ledger for external services, bots, or integrations.

FieldDescription
nameDescriptive name (e.g., "Trading Bot")
party_idCanton party the key acts as (autocomplete from user list)
allowed_packagesRestrict to specific Daml packages (select apps to derive)
allowed_choicesRestrict to specific contract choices
rate_limitRequests per minute (default: 60)

Creating an endpoint:

  1. Click Add API Endpoint
  2. Enter a name and select the party
  3. Select dock apps to restrict access to their packages (optional)
  4. Set rate limit and choice restrictions (optional)
  5. Click Create — the API key (cwp_...) is shown once
  6. Copy the key immediately — it cannot be retrieved again

API keys are stored as SHA-256 hashes. All usage is recorded in audit logs accessible via the Logs button on each endpoint.

External services use the key with the Proxy API:

bash
curl -X POST https://wallet.acme.com/api/proxy/query \
  -H "X-API-Key: cwp_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"templateId": "abc123...#DeFi:Position"}'

Backup & Restore

Backup is split into two separate files to preserve MPC key separation. Both are accessible from the admin panel under Configuration.

Why Backup Is Critical

Signing requires three things to align:

  1. User's passkey (hardware device — not backed up by us)
  2. D1 database — PRF-encrypted client key shares
  3. MPC Durable Objects — server key shares (on a separate system)

Loss of either #2 or #3 makes all user wallets permanently inaccessible. Regular backups protect against this.

Two Separate Backup Files

BackupContainsAccessAdmin Panel
PortalD1 tables (encrypted client shares, users, config)Superadmin tokenDownload / Restore buttons
MPC SignerDurable Object server sharesSuperadmin token + IP whitelistDownload / Restore buttons (fails if IP not whitelisted)

The two files should be stored by different custodians in different systems. An attacker needs both files AND a user's physical passkey to reconstruct any private key.

Using the Admin Panel

  1. Go to Configuration in the superadmin panel
  2. Scroll to the Portal Backup and MPC Signer Backup cards
  3. Click Download to create a backup, Restore to upload one

Using the CLI

Portal backup:

bash
curl -s -H "X-Superadmin-Token: $TOKEN" \
  https://portal.example.com/api/superadmin/backup \
  > portal-backup-$(date +%Y%m%d).json

MPC signer backup (requires whitelisted IP):

bash
curl -s -H "X-Superadmin-Token: $TOKEN" \
  https://portal.example.com/api/superadmin/backup-mpc \
  > mpc-backup-$(date +%Y%m%d).json

Portal restore:

bash
curl -s -X POST -H "X-Superadmin-Token: $TOKEN" \
  -H "Content-Type: application/json" \
  -d @portal-backup.json \
  "https://portal.example.com/api/superadmin/restore?mode=merge"

MPC signer restore (requires whitelisted IP):

bash
curl -s -X POST -H "X-Superadmin-Token: $TOKEN" \
  -H "Content-Type: application/json" \
  -d @mpc-backup.json \
  https://portal.example.com/api/superadmin/restore-mpc

IP Whitelist

The MPC backup endpoints are restricted by IP whitelist, managed in the MPC Signer Backup card under Configuration.

Whitelist stateWho can access MPC backupWho can edit whitelist
EmptyAny IP (with superadmin token)Any IP (with superadmin token)
Has IPsOnly listed IPsOnly listed IPs
WhenWhy
Daily automatedCatch all new registrations
After bulk user onboardingNew MPC keys created
Before infrastructure changesDomain, account, or worker migrations
Before Cloudflare account migrationDurable Objects are account-scoped

Troubleshooting

Cannot Access Admin Panel

User doesn't have admin role:

bash
wrangler d1 execute wallet-prod --remote \
  --command="UPDATE users SET role = 'admin' WHERE username = 'yourusername';"

Superadmin Login Fails

The default account is auto-created on first login. If credentials are lost:

bash
wrangler d1 execute wallet-prod --remote \
  --command="DELETE FROM superadmin_users; DELETE FROM superadmin_sessions;"

DAR Upload Fails

  • Check Canton participant is reachable (CANTON_JSON_HOST)
  • Verify the DAR file is valid
  • Check if the package is already uploaded

User Has No Party ID

Use the Assign Party button in the admin panel or call POST /api/admin/onboard-user.

Canton Tunnel Not Working

  • Verify cloudflared is running: cloudflared tunnel list
  • Check tunnel config: cat ~/.cloudflared/config.yml
  • Test connectivity: curl https://your-tunnel-domain/health

Next Steps

Enterprise-grade multi-chain wallet infrastructure.