mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-17 05:58:37 +00:00
refactor(licensing): replace Pro branding with Community/Skipper/Admiral tiers (#375)
Eliminate all references to "Pro" across backend, frontend, and docs. Internal tier value renamed from 'pro' to 'paid'; user-facing text now uses the thematic tier names (Community, Skipper, Admiral). - Rename LicenseTier 'pro' to 'paid' in backend and frontend types - Rename requirePro guard to requirePaid, error code PRO_REQUIRED to PAID_REQUIRED - Rename ProGate.tsx to PaidGate.tsx with updated copy - Fix: trial users can now see upgrade/purchase cards in Settings - Update all docs and openapi.yaml to use correct tier names
This commit is contained in:
@@ -69,7 +69,7 @@ The `code` field is present for specific error types:
|
||||
|
||||
| Code | Meaning |
|
||||
|------|---------|
|
||||
| `PRO_REQUIRED` | Endpoint requires a Pro (Skipper or Admiral) license |
|
||||
| `PAID_REQUIRED` | Endpoint requires a Skipper or Admiral license |
|
||||
| `ADMIRAL_REQUIRED` | Endpoint requires an Admiral license |
|
||||
| `SCOPE_DENIED` | API token scope does not allow this operation |
|
||||
|
||||
@@ -104,7 +104,7 @@ Some endpoints are gated by license tier:
|
||||
|
||||
| Tier | Gated features |
|
||||
|------|---------------|
|
||||
| **Pro (Skipper+)** | Webhooks, Fleet snapshots, Stack rollback |
|
||||
| **Skipper+** | Webhooks, Fleet snapshots, Stack rollback |
|
||||
| **Admiral** | API Tokens, Scheduled Tasks |
|
||||
|
||||
Requests to gated endpoints on a lower tier return `403` with the appropriate error code.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Atomic Deployments
|
||||
description: Zero-downtime deployments with automatic rollback for Sencho Pro users.
|
||||
description: Zero-downtime deployments with automatic rollback for Skipper and Admiral users.
|
||||
---
|
||||
|
||||
<Note>
|
||||
Atomic Deployments require a **Sencho Skipper** or **Admiral** license. Community Edition uses standard deployments without backup or rollback.
|
||||
</Note>
|
||||
|
||||
Sencho Pro wraps every deployment in a safety net. Before applying changes, it backs up your current configuration. If the deployment fails, it automatically rolls back to the previous working state.
|
||||
Sencho wraps every deployment in a safety net on Skipper and Admiral tiers. Before applying changes, it backs up your current configuration. If the deployment fails, it automatically rolls back to the previous working state.
|
||||
|
||||
## How it works
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Snapshot compose files across all nodes for disaster recovery and a
|
||||
---
|
||||
|
||||
<Note>
|
||||
Fleet-Wide Backups require a Sencho Pro license. The feature is available to Pro admins in the Fleet View.
|
||||
Fleet-Wide Backups require a Skipper or Admiral license. The feature is available to admins in the Fleet View.
|
||||
</Note>
|
||||
|
||||
Create point-in-time snapshots of every `compose.yaml` and `.env` file across your entire fleet, local and remote nodes alike. Snapshots are stored centrally in Sencho's database and can be browsed, previewed, and restored at any time.
|
||||
|
||||
@@ -3,7 +3,7 @@ title: Fleet View
|
||||
description: Monitor all your nodes from a single dashboard with real-time health metrics, search, filtering, and container drill-down.
|
||||
---
|
||||
|
||||
The **Fleet** tab gives you a bird's-eye view of every node in your Sencho deployment, local and remote, on one screen. It is available to all tiers, with advanced features unlocked by Sencho Pro.
|
||||
The **Fleet** tab gives you a bird's-eye view of every node in your Sencho deployment, local and remote, on one screen. It is available to all tiers, with advanced features unlocked by Skipper and Admiral.
|
||||
|
||||
<Frame>
|
||||
<img src="/images/fleet-view/fleet-overview.png" alt="Fleet Overview showing health summary cards, toolbar, node cards, and tabs" />
|
||||
@@ -20,7 +20,7 @@ The header shows **Fleet Overview** with a subtitle summarising the current stat
|
||||
|
||||
| Button | What it does |
|
||||
|--------|--------------|
|
||||
| **Check Updates** | Opens the Node Updates modal to view and apply Sencho version updates across your fleet (Pro) |
|
||||
| **Check Updates** | Opens the Node Updates modal to view and apply Sencho version updates across your fleet (Skipper+) |
|
||||
| **Refresh** | Re-fetches data from all nodes. Shows a spinner while loading |
|
||||
|
||||
## Community features
|
||||
@@ -55,10 +55,10 @@ Click the **Refresh** button in the top-right to re-fetch data from all nodes. T
|
||||
|
||||
---
|
||||
|
||||
## Pro features
|
||||
## Paid features
|
||||
|
||||
<Note>
|
||||
The features below require a Sencho Pro license. Community users see an upgrade prompt in place of these controls.
|
||||
The features below require a Skipper or Admiral license. Community users see an upgrade prompt in place of these controls.
|
||||
</Note>
|
||||
|
||||
### Fleet health summary cards
|
||||
|
||||
@@ -53,7 +53,7 @@ When you manage multiple nodes running different Sencho versions, the dashboard
|
||||
|
||||
## Fleet View
|
||||
|
||||
Monitor your entire infrastructure from a single screen. The fleet dashboard shows all nodes with health metrics, container counts, and resource usage. Pro users unlock fleet health summary cards, container drill-down, search, sorting, filtering, and critical node detection. [Learn more →](/features/fleet-view)
|
||||
Monitor your entire infrastructure from a single screen. The fleet dashboard shows all nodes with health metrics, container counts, and resource usage. Skipper and Admiral users unlock fleet health summary cards, container drill-down, search, sorting, filtering, and critical node detection. [Learn more →](/features/fleet-view)
|
||||
|
||||
## Remote updates
|
||||
|
||||
@@ -85,7 +85,7 @@ Automate recurring maintenance tasks like stack restarts, fleet snapshots, and s
|
||||
|
||||
## RBAC & user management
|
||||
|
||||
Create viewer accounts with read-only access to dashboards, logs, and file contents, while keeping deploy and edit permissions locked to admins. Sencho Pro supports two roles: Admin (full access) and Viewer (read-only). [Learn more →](/features/rbac)
|
||||
Create viewer accounts with read-only access to dashboards, logs, and file contents, while keeping deploy and edit permissions locked to admins. Sencho supports two roles on Skipper: Admin (full access) and Viewer (read-only), with three additional roles on Admiral. [Learn more →](/features/rbac)
|
||||
|
||||
## SSO & LDAP authentication
|
||||
|
||||
@@ -93,7 +93,7 @@ Authenticate with your existing identity provider. Sencho supports LDAP/Active D
|
||||
|
||||
## Atomic deployments
|
||||
|
||||
Pro users get automatic backup and rollback on every deployment. Before applying changes, Sencho snapshots your compose and environment files. If containers crash after deploy, the previous configuration is restored automatically. [Learn more →](/features/atomic-deployments)
|
||||
Skipper and Admiral users get automatic backup and rollback on every deployment. Before applying changes, Sencho snapshots your compose and environment files. If containers crash after deploy, the previous configuration is restored automatically. [Learn more →](/features/atomic-deployments)
|
||||
|
||||
## Fleet-wide backups
|
||||
|
||||
@@ -109,4 +109,4 @@ Track every mutating action across your Sencho instance with a searchable audit
|
||||
|
||||
## Licensing & billing
|
||||
|
||||
Sencho is free for personal use with the Community tier. Pro unlocks RBAC, webhooks, fleet backups, atomic deployments, and advanced fleet features. Manage your license, view subscription details, and access the billing portal from Settings. [Learn more →](/features/licensing)
|
||||
Sencho is free for personal use with the Community tier. Skipper and Admiral unlock RBAC, webhooks, fleet backups, atomic deployments, and advanced fleet features. Manage your license, view subscription details, and access the billing portal from Settings. [Learn more →](/features/licensing)
|
||||
|
||||
@@ -7,7 +7,7 @@ description: Role-based access control for Sencho - manage admin, viewer, deploy
|
||||
Multi-user support requires a **Sencho Skipper** or **Admiral** license. Community Edition supports a single admin account only. Intermediate roles (Deployer, Node Admin, Auditor) and scoped permissions require **Admiral**.
|
||||
</Note>
|
||||
|
||||
Sencho supports role-based access control with five distinct roles. **Admin** and **Viewer** are available on all Pro tiers, while **Deployer**, **Node Admin**, and **Auditor** are exclusive to Admiral.
|
||||
Sencho supports role-based access control with five distinct roles. **Admin** and **Viewer** are available on all paid tiers, while **Deployer**, **Node Admin**, and **Auditor** are exclusive to Admiral.
|
||||
|
||||
## Roles
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ description: Check for outdated nodes and trigger over-the-air Sencho updates fr
|
||||
Sencho can update remote nodes directly from the dashboard. When your primary instance is running a newer version than a remote node, a one-click update pulls the latest image and recreates the container automatically.
|
||||
|
||||
<Note>
|
||||
Remote updates require a **Sencho Pro** license (Skipper or Admiral tier).
|
||||
Remote updates require a **Skipper** or **Admiral** license.
|
||||
</Note>
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@@ -103,7 +103,7 @@ Click the eye icon on any network row to open a detail panel showing:
|
||||
<img src="/images/networks/network-inspect.png" alt="Network inspect panel showing IPAM config and connected containers" />
|
||||
</Frame>
|
||||
|
||||
#### Network topology <span style={{fontSize: '0.75em', color: 'var(--brand)'}}>Pro</span>
|
||||
#### Network topology <span style={{fontSize: '0.75em', color: 'var(--brand)'}}>Skipper</span>
|
||||
|
||||
Switch to the **Topology** view to see an interactive graph of your Docker networks and the containers connected to them. System networks (`bridge`, `host`, `none`) are excluded for clarity.
|
||||
|
||||
@@ -118,7 +118,7 @@ Switch to the **Topology** view to see an interactive graph of your Docker netwo
|
||||
- A mini map in the bottom-right provides an overview
|
||||
|
||||
<Note>
|
||||
Network Topology requires a Sencho Pro license (Skipper or Admiral). Community users see an upgrade prompt.
|
||||
Network Topology requires a Skipper or Admiral license. Community users see an upgrade prompt.
|
||||
</Note>
|
||||
|
||||
### Unmanaged
|
||||
|
||||
@@ -51,7 +51,7 @@ The stack header shows different actions depending on whether the stack is runni
|
||||
| **Stop** | `docker compose stop` | Stops containers without removing them. State is preserved. |
|
||||
| **Restart** | `docker compose restart` | Restarts all containers in the stack. |
|
||||
| **Update** | `docker compose pull` + `up -d` | Pulls the latest image tags and recreates containers. |
|
||||
| **Rollback** | Restores backup | Reverts compose and env files to the pre-deploy snapshot and redeploys. Only shown when a backup exists (Pro). |
|
||||
| **Rollback** | Restores backup | Reverts compose and env files to the pre-deploy snapshot and redeploys. Only shown when a backup exists (Skipper+). |
|
||||
| **Delete** | `down --volumes` + removes files | Stops and removes containers and volumes, then deletes the stack directory. |
|
||||
|
||||
**When stopped:**
|
||||
@@ -89,7 +89,7 @@ Right-click any stack in the sidebar to open the context menu. The menu adapts t
|
||||
### Available actions
|
||||
|
||||
- **Alerts** - configure metric-based alerting rules for this stack
|
||||
- **Labels** - assign organizational labels (Pro)
|
||||
- **Labels** - assign organizational labels (Skipper+)
|
||||
- **Check for updates** - manually trigger an image update check
|
||||
- **Open App** - open the stack's web interface in a new tab (only shown when the stack is running and exposes a web port)
|
||||
- **Deploy** - start the stack (shown when stopped)
|
||||
|
||||
+27
-27
@@ -25,8 +25,8 @@ info:
|
||||
|
||||
## License Tiers
|
||||
|
||||
Some endpoints require a Pro or Admiral license. Requests to gated endpoints
|
||||
on Community Edition return `403` with `code: "PRO_REQUIRED"` or `code: "ADMIRAL_REQUIRED"`.
|
||||
Some endpoints require a Skipper or Admiral license. Requests to gated endpoints
|
||||
on Community Edition return `403` with `code: "PAID_REQUIRED"` or `code: "ADMIRAL_REQUIRED"`.
|
||||
contact:
|
||||
name: Sencho
|
||||
url: https://sencho.io
|
||||
@@ -59,11 +59,11 @@ tags:
|
||||
- name: API Tokens
|
||||
description: Manage scoped API tokens (Admiral license required)
|
||||
- name: Webhooks
|
||||
description: Configure and trigger deployment webhooks (Pro license required)
|
||||
description: Configure and trigger deployment webhooks (Skipper or Admiral license required)
|
||||
- name: Nodes
|
||||
description: Manage local and remote Sencho nodes
|
||||
- name: Fleet
|
||||
description: Multi-node fleet overview and snapshots (Pro license required)
|
||||
description: Multi-node fleet overview and snapshots (Skipper or Admiral license required)
|
||||
- name: Scheduled Tasks
|
||||
description: Configure recurring automated operations (Admiral license required)
|
||||
- name: Registries
|
||||
@@ -131,8 +131,8 @@ components:
|
||||
description: Human-readable error message.
|
||||
code:
|
||||
type: string
|
||||
description: Machine-readable error code (e.g., `PRO_REQUIRED`, `SCOPE_DENIED`).
|
||||
enum: [PRO_REQUIRED, ADMIRAL_REQUIRED, SCOPE_DENIED]
|
||||
description: Machine-readable error code (e.g., `PAID_REQUIRED`, `SCOPE_DENIED`).
|
||||
enum: [PAID_REQUIRED, ADMIRAL_REQUIRED, SCOPE_DENIED]
|
||||
|
||||
SuccessMessage:
|
||||
type: object
|
||||
@@ -503,8 +503,8 @@ components:
|
||||
schema:
|
||||
$ref: "#/components/schemas/Error"
|
||||
example:
|
||||
error: "This feature requires Sencho Pro."
|
||||
code: "PRO_REQUIRED"
|
||||
error: "This feature requires a Skipper or Admiral license."
|
||||
code: "PAID_REQUIRED"
|
||||
NotFound:
|
||||
description: Resource not found.
|
||||
content:
|
||||
@@ -931,7 +931,7 @@ paths:
|
||||
tags: [Stacks]
|
||||
summary: Deploy stack
|
||||
description: |
|
||||
Runs `docker compose up -d` for the stack. On Pro tier, uses atomic deployment
|
||||
Runs `docker compose up -d` for the stack. On Skipper/Admiral tier, uses atomic deployment
|
||||
with automatic rollback on failure. Requires `stack:deploy` permission.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/stackName"
|
||||
@@ -959,7 +959,7 @@ paths:
|
||||
type: string
|
||||
rolledBack:
|
||||
type: boolean
|
||||
description: Whether the stack was automatically rolled back (Pro tier).
|
||||
description: Whether the stack was automatically rolled back (Skipper/Admiral tier).
|
||||
|
||||
/api/stacks/{stackName}/down:
|
||||
post:
|
||||
@@ -1075,7 +1075,7 @@ paths:
|
||||
summary: Pull and recreate stack
|
||||
description: |
|
||||
Pulls latest images and recreates containers (`docker compose pull && up -d`).
|
||||
On Pro tier, uses atomic update with automatic rollback on failure.
|
||||
On Skipper/Admiral tier, uses atomic update with automatic rollback on failure.
|
||||
Requires `stack:deploy` permission.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/stackName"
|
||||
@@ -1112,7 +1112,7 @@ paths:
|
||||
operationId: rollbackStack
|
||||
tags: [Stacks]
|
||||
summary: Rollback stack
|
||||
description: Restores the stack to its previous deployment state. Requires Pro license and `stack:deploy` permission.
|
||||
description: Restores the stack to its previous deployment state. Requires Skipper or Admiral license and `stack:deploy` permission.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/stackName"
|
||||
- $ref: "#/components/parameters/nodeId"
|
||||
@@ -1410,7 +1410,7 @@ paths:
|
||||
operationId: listWebhooks
|
||||
tags: [Webhooks]
|
||||
summary: List webhooks
|
||||
description: Returns all configured webhooks with masked secrets. Requires Pro license.
|
||||
description: Returns all configured webhooks with masked secrets. Requires Skipper or Admiral license.
|
||||
responses:
|
||||
"200":
|
||||
description: Array of webhook objects.
|
||||
@@ -1430,7 +1430,7 @@ paths:
|
||||
summary: Create webhook
|
||||
description: |
|
||||
Creates a new webhook for a stack. The webhook secret is auto-generated and only
|
||||
returned in the creation response. Requires Pro license and admin role.
|
||||
returned in the creation response. Requires Skipper or Admiral license and admin role.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
@@ -1483,7 +1483,7 @@ paths:
|
||||
operationId: updateWebhook
|
||||
tags: [Webhooks]
|
||||
summary: Update webhook
|
||||
description: Updates webhook configuration. Requires Pro license and admin role.
|
||||
description: Updates webhook configuration. Requires Skipper or Admiral license and admin role.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/idPath"
|
||||
requestBody:
|
||||
@@ -1525,7 +1525,7 @@ paths:
|
||||
operationId: deleteWebhook
|
||||
tags: [Webhooks]
|
||||
summary: Delete webhook
|
||||
description: Permanently deletes a webhook. Requires Pro license and admin role.
|
||||
description: Permanently deletes a webhook. Requires Skipper or Admiral license and admin role.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/idPath"
|
||||
responses:
|
||||
@@ -1547,7 +1547,7 @@ paths:
|
||||
operationId: getWebhookHistory
|
||||
tags: [Webhooks]
|
||||
summary: Get webhook execution history
|
||||
description: Returns the execution log for a webhook. Requires Pro license.
|
||||
description: Returns the execution log for a webhook. Requires Skipper or Admiral license.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/idPath"
|
||||
responses:
|
||||
@@ -1882,7 +1882,7 @@ paths:
|
||||
operationId: getFleetNodeStacks
|
||||
tags: [Fleet]
|
||||
summary: List stacks on a fleet node
|
||||
description: Returns stack names from a specific fleet node. Requires Pro license.
|
||||
description: Returns stack names from a specific fleet node. Requires Skipper or Admiral license.
|
||||
parameters:
|
||||
- name: nodeId
|
||||
in: path
|
||||
@@ -1922,7 +1922,7 @@ paths:
|
||||
operationId: getFleetNodeStackContainers
|
||||
tags: [Fleet]
|
||||
summary: List containers in a fleet node stack
|
||||
description: Returns containers for a specific stack on a specific fleet node. Requires Pro license.
|
||||
description: Returns containers for a specific stack on a specific fleet node. Requires Skipper or Admiral license.
|
||||
parameters:
|
||||
- name: nodeId
|
||||
in: path
|
||||
@@ -1992,7 +1992,7 @@ paths:
|
||||
"401":
|
||||
$ref: "#/components/responses/Unauthorized"
|
||||
"403":
|
||||
$ref: "#/components/responses/ProRequired"
|
||||
$ref: "#/components/responses/Forbidden"
|
||||
|
||||
/api/fleet/nodes/{nodeId}/update:
|
||||
post:
|
||||
@@ -2019,7 +2019,7 @@ paths:
|
||||
"401":
|
||||
$ref: "#/components/responses/Unauthorized"
|
||||
"403":
|
||||
$ref: "#/components/responses/ProRequired"
|
||||
$ref: "#/components/responses/Forbidden"
|
||||
"404":
|
||||
description: Node not found.
|
||||
content:
|
||||
@@ -2066,14 +2066,14 @@ paths:
|
||||
"401":
|
||||
$ref: "#/components/responses/Unauthorized"
|
||||
"403":
|
||||
$ref: "#/components/responses/ProRequired"
|
||||
$ref: "#/components/responses/Forbidden"
|
||||
|
||||
/api/fleet/snapshots:
|
||||
post:
|
||||
operationId: createFleetSnapshot
|
||||
tags: [Fleet]
|
||||
summary: Create fleet snapshot
|
||||
description: Creates a point-in-time backup of all compose files across all nodes. Requires Pro license and admin role.
|
||||
description: Creates a point-in-time backup of all compose files across all nodes. Requires Skipper or Admiral license and admin role.
|
||||
requestBody:
|
||||
required: false
|
||||
content:
|
||||
@@ -2100,7 +2100,7 @@ paths:
|
||||
operationId: listFleetSnapshots
|
||||
tags: [Fleet]
|
||||
summary: List fleet snapshots
|
||||
description: Returns paginated fleet snapshots. Requires Pro license.
|
||||
description: Returns paginated fleet snapshots. Requires Skipper or Admiral license.
|
||||
parameters:
|
||||
- name: limit
|
||||
in: query
|
||||
@@ -2138,7 +2138,7 @@ paths:
|
||||
operationId: getFleetSnapshot
|
||||
tags: [Fleet]
|
||||
summary: Get snapshot details
|
||||
description: Returns full snapshot details including all captured files grouped by node and stack. Requires Pro license.
|
||||
description: Returns full snapshot details including all captured files grouped by node and stack. Requires Skipper or Admiral license.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/idPath"
|
||||
responses:
|
||||
@@ -2158,7 +2158,7 @@ paths:
|
||||
operationId: deleteFleetSnapshot
|
||||
tags: [Fleet]
|
||||
summary: Delete snapshot
|
||||
description: Permanently deletes a fleet snapshot. Requires Pro license and admin role.
|
||||
description: Permanently deletes a fleet snapshot. Requires Skipper or Admiral license and admin role.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/idPath"
|
||||
responses:
|
||||
@@ -2180,7 +2180,7 @@ paths:
|
||||
operationId: restoreFleetSnapshot
|
||||
tags: [Fleet]
|
||||
summary: Restore from snapshot
|
||||
description: Restores a specific stack on a specific node from the snapshot. Optionally redeploys after restore. Requires Pro license and admin role.
|
||||
description: Restores a specific stack on a specific node from the snapshot. Optionally redeploys after restore. Requires Skipper or Admiral license and admin role.
|
||||
parameters:
|
||||
- $ref: "#/components/parameters/idPath"
|
||||
requestBody:
|
||||
|
||||
Reference in New Issue
Block a user