MSP & Multi-Tenancy
The Control Panel includes full multi-tenancy support for Managed Service Providers (MSPs). You can create and manage clients, set resource quotas, generate per-client billing reports, customize branding for each client, and curate client-specific app catalogs.
Client Management
Creating a Client
- Navigate to MSP > Clients from the sidebar
- Click Add Client
- Enter the client details:
- Company name — the client’s business name
- Contact email — primary contact for the client
- Plan — the licensing plan for this client
- Configure resource quotas (see below)
- Click Create
The client appears in the client list and can have instances, users, and branding assigned to it.
Client List
The client list shows all managed clients with:
- Company name
- Number of servers
- Number of users
- Current plan
- Compliance status
- Monthly billing total
Resource Quotas
Each client can have resource quotas that limit their usage within the Control Panel. Quotas prevent any single client from consuming excessive resources.
Available Quotas
| Quota | Description |
|---|---|
max_servers | Maximum number of Cloud OS instances the client can register |
max_users | Maximum number of user accounts for the client |
max_apps_per_server | Maximum number of applications per server |
storage_quota_gb | Maximum total storage across all instances in gigabytes |
Setting Quotas
- Open the client detail page
- Navigate to the Quotas tab
- Set the desired limits for each quota
- Click Save
When a client reaches a quota limit, new resources of that type cannot be added until existing resources are removed or the quota is increased.
Quota enforcement is checked at the time of resource creation. Existing resources are not removed if a quota is lowered below current usage, but no new resources can be added until usage falls below the new limit.
Per-Client Billing Reports
The Control Panel generates billing reports for each client based on their resource usage and hosting costs.
Report Contents
- Server count — number of active instances
- Hosting costs — costs from provisioned servers (Hetzner Cloud, DigitalOcean)
- License fees — based on the client’s plan and instance count
- Total monthly cost — aggregated billing amount
Generating Reports
- Navigate to MSP > Billing
- Select the client and the billing period
- Click Generate Report
- Export the report as PDF or CSV
Reports can be generated for individual clients or as a summary across all clients.
White-Label Branding
The Control Panel supports white-label branding so that each client sees a customized interface with their own company identity.
Branding Options
| Setting | Description |
|---|---|
logo_url | URL to the client’s logo image |
favicon_url | URL to the client’s favicon |
company_name | Company name displayed in the header and title |
primary_color | Primary brand color (hex value) |
secondary_color | Secondary brand color (hex value) |
accent_color | Accent color for highlights and buttons (hex value) |
custom_domain | Custom domain for the client’s Control Panel access |
custom_css | Additional CSS for advanced customization |
Configuring Branding
- Open the client detail page
- Navigate to the Branding tab
- Upload a logo and favicon, or provide URLs
- Set the color scheme
- Optionally configure a custom domain
- Add custom CSS if needed
- Click Save
The branding changes take effect immediately for users belonging to that client.
Custom domains require DNS configuration. The client must point their domain to the Control Panel’s IP address or load balancer. TLS certificates are managed separately.
Custom CSS
The custom_css field accepts arbitrary CSS that is injected into the Control Panel frontend for the client’s users. This allows fine-grained visual customization beyond the color settings.
Example use cases for custom CSS:
- Hiding specific navigation items
- Adjusting font sizes or families
- Customizing the login page layout
Client App Catalogs
Each client can have a curated app catalog that controls which applications are available to their instances.
How App Catalogs Work
By default, clients have access to the full Cloud OS app template library. You can restrict this by creating a custom catalog:
- Open the client detail page
- Navigate to the App Catalog tab
- Toggle individual apps on or off
- Click Save
Only apps enabled in the client’s catalog will be available for installation on their Cloud OS instances.
This feature is useful for:
- Restricting clients to approved applications only
- Offering different app tiers based on the client’s plan
- Preventing installation of resource-heavy apps on clients with small quotas
Tenant Isolation
Each client’s data is isolated at the database level using a TenantID. Every API request is scoped to the authenticated user’s tenant, ensuring that clients cannot access each other’s instances, users, or configuration.
The JWT token includes the TenantID claim, which the backend uses to filter all queries to the correct tenant.
Next Steps
- Partner Program — manage partner tiers and discounts
- Billing and Licensing — understand license management
- Managed Hosting — provision servers for your clients