Files
sencho/docs/features/licensing.mdx
T
Anso 66b84932e0 feat(notifications): move Notification Routing to Skipper tier (#1145)
* feat(notifications): move Notification Routing to Skipper tier

Notification routing is automation (route alerts to channels by rules),
not enterprise compliance. Aligning the gate with Skipper makes the tier
boundary read consistently with the rest of the automation surface
(webhooks, auto-update, auto-heal, scheduled tasks).

Backend: requireAdmiral -> requirePaid on the five /api/notification-routes
endpoints. Dashboard configuration-status now exposes the routing-rules
row to any paid tier.

Frontend: settings registry tier flipped to skipper; the Admiral wrapper
around NotificationRoutingSection is removed (the inner CapabilityGate
stays, preserving forward-compat with older remote nodes).

Tests: added a tier-enforcement describe block covering Skipper (200) and
Community (403 PAID_REQUIRED on all five endpoints).

Docs: refreshed alerts-notifications, licensing, overview, dashboard,
troubleshooting, and reference/settings; cleaned one fence-spec line per
Directive 31.

* fix(notifications): address audit findings on tier-move PR

Docs: rewrite three lines that survived the initial sweep. The dashboard
"you do not see a locked placeholder" clause and the settings.mdx
"hidden on Community and Skipper" phrase were Directive 31 fence-spec.
The alerts-notifications troubleshooting note still said "an Admiral
routing rule" and contradicted the tier move.

Tests: the Community-negative cases on POST/PUT/DELETE/POST :id/test
could not distinguish requirePaid from a stray requireAdmiral, because
Community fails on the tier check before variant is read. Adding
Skipper-positive coverage per endpoint locks the gate identity in.
Replace the leaky mockReturnValueOnce with a per-test mockReturnValue
plus an afterEach restore so spies cannot bleed across tests.
2026-05-21 20:57:34 -04:00

180 lines
11 KiB
Plaintext

---
title: Licensing & Billing
description: How Sencho licensing works, including trials, activation, and subscription management.
---
Sencho uses an open-core model. The **Community** tier is free forever with unlimited nodes. Paid tiers unlock advanced features: **Skipper** for solo operators and **Admiral** for teams.
<Tip>
*Our tier names are inspired by the meaning of Sencho (船長), because you're the captain of your container fleet.*
</Tip>
## Plans
| Tier | Annual (per mo, billed yearly) | Monthly | Founder Lifetime | Seats |
|------|--------------------------------|---------|------------------|-------|
| **Community** | Free | Free | Free | 1 admin |
| **Skipper** | $5.75 | $9.99 | $149 | 1 admin + 3 viewers |
| **Admiral** | $20.75 | $39.99 | $499 | Unlimited |
For larger deployments, an **Enterprise** tier is available with custom pricing, including SLA, priority support, security questionnaires, and custom contracts. Contact [licensing@sencho.io](mailto:licensing@sencho.io) or see [the pricing page](https://sencho.io/pricing) for details.
**Founder Lifetime** is an Early Access offer available for a limited time. Once the window closes, only the Monthly and Annual cycles remain.
### Feature breakdown
**Community** includes:
- Unlimited nodes, the Monaco compose editor, the full stack file explorer (browse, view, edit, upload, download, rename, chmod, delete; admin role for writes), and the App Store with 199+ one-click templates
- Real-time container stats, global logs, the interactive network topology graph, and stack labels
- Git sources for compose stacks
- Multi-node management in both Proxy and Pilot Agent modes
- Manual fleet snapshots (create, browse, restore, delete) and per-node Sencho updates
- Custom S3-compatible backup target (bring your own AWS S3, Cloudflare R2, MinIO, Backblaze B2, or Wasabi bucket)
- Vulnerability scanning: install, update, and uninstall Trivy, on-demand scans for vulnerabilities, secrets, and misconfigurations, plus scan comparison
- CVE suppressions
- Alert rules with Discord, Slack, and webhook targets
- Two-factor authentication (TOTP plus backup codes)
- Custom OIDC single sign-on (works with Authelia, Keycloak, Authentik, Zitadel, Pocket ID, or any spec-compliant OIDC provider)
**Skipper** includes everything in Community, plus:
- Fleet View with search, sort, filter, and node-card drill-down
- Webhooks (incoming, to trigger deploys from CI/CD)
- Notification routing (per-stack and per-category rules to Discord, Slack, or any webhook)
- Atomic deployments with rollback
- Auto-update policies for stack images
- Auto-heal policies
- Scheduled operations across the full action catalog (lifecycle, updates, scans, snapshots, prune)
- Scan policies with `block_on_deploy` deploy enforcement, SBOM (SPDX, CycloneDX), and SARIF export
- Bulk actions on a label (deploy, stop, or restart every stack tagged with it)
- Remote OTA node updates from the control instance
- Fleet Actions (bulk update all, bulk restart Sencho)
- Blueprints and Fleet Secrets
- Preset SSO for Google, GitHub, and Okta
- Viewer accounts (1 admin plus 3 viewers)
**Admiral** includes everything in Skipper, plus:
- Unlimited admin and viewer accounts with the full role set (deployer, node-admin, auditor)
- LDAP / Active Directory authentication
- Audit log with CSV export
- Host Console (a browser-based terminal on the Sencho host)
- API tokens for CI/CD scripts
- Private and custom registry credentials
- Sencho Mesh (cross-node container networking)
- Sencho Cloud Backup
- Auto-update of the managed Trivy binary
## Free trial
Sencho offers a **14-day Admiral trial** so you can evaluate the flagship features (Host Console, Sencho Mesh, LDAP / Active Directory, audit log, unlimited accounts) with your real infrastructure before committing. The trial is offered on the monthly and annual Admiral plans; the Founder Lifetime plan does not include a trial.
To start a trial:
1. Visit the [pricing page](https://sencho.io/pricing).
2. Switch to the **Annual** or **Monthly** billing tab.
3. Click **Start 14-day trial** on the **Admiral** card.
4. Complete the checkout. A valid card is required for verification; you are not charged until the trial ends.
5. Your license key is emailed to you within a few minutes.
6. Activate the key in the Sencho dashboard as described in [Activating your license](#activating-your-license).
When your trial ends, the card you provided is automatically charged and your plan continues as a paid Admiral subscription. To avoid being charged, cancel from the **Manage subscription** button in **Settings → License** (or from your receipt email) any time before day 14.
<Tip>
Fresh installs land on the **Community** tier until you activate a license key. All Community features (unlimited nodes, compose editor, global logs, alerts, Custom OIDC, and more) are available immediately.
</Tip>
## Activating your license
Open **Settings → License** in the Sencho dashboard. When the license is not active, the **Activate** section sits below the Plan card:
<Frame>
<img src="/images/licensing/license-activate-section.png" alt="The Activate section of the License page on a Community-tier instance, with a License key input field and an Activate button on the right" />
</Frame>
1. Paste your key into the **License key** field.
2. Click **Activate**.
Sencho validates the key and unlocks your tier. If activation fails, the toast surfaces the verbatim error; common causes are an invalid key, a typo, or an activation limit reached on a previous instance.
## The Plan section
When a license is active, **Settings → License** opens on the **Plan** section. The page masthead at the top exposes three stat pills, and the section below lists the metadata for the active license.
<Frame>
<img src="/images/licensing/license-admiral-active.png" alt="License page showing an Admiral lifetime plan with the masthead stat strip listing SCOPE, PLAN, and DURATION, then the Plan section with the Customer, Product, and masked License key fields and the Deactivate button" />
</Frame>
The masthead pills are:
| Pill | Meaning |
|------|---------|
| **SCOPE** | Reads `operator` when you are signed in as an admin. |
| **PLAN** | The current tier: `community`, `skipper`, or `admiral`. Trial licenses show the trial tier (typically `admiral`). |
| **DURATION** / **RENEWS** / **TRIAL** / **STATUS** | `DURATION: lifetime` for lifetime licenses, `RENEWS: <date>` for active subscriptions, `TRIAL: Xd left` for trials, and `STATUS: expired` for expired licenses. |
The **Plan** card lists:
- **Tier name** (e.g. `Sencho Admiral`) with a short status line, such as "Active license on this control plane", "Trial: X days remaining", or "Your license has expired."
- **Customer**: the customer name on the purchase.
- **Product**: the purchased product variant (e.g. `Sencho Admiral`).
- **License key**: the last four characters of your key, displayed as `****-****-****-XXXX`. The full key is never re-displayed after activation.
## Managing your subscription
When the license is an active subscription (not lifetime), the Plan section action row exposes **Manage subscription** alongside **Deactivate**. **Manage subscription** opens the billing portal in a new tab, where you can update your payment method, view invoices, cancel, or switch plans.
The same portal is reachable from the profile menu in the top-right corner of the app:
<Frame>
<img src="/images/licensing/profile-menu.png" alt="Profile dropdown popover showing an identity header with the admin role and Admiral tier badges, a navigation strip with Settings, Documentation, and Feedback entries, an Appearance theme picker, and a Log Out button" />
</Frame>
Click your initials in the top-right corner to open the popover. For active subscription licenses, a **Billing** row appears between **Settings** and **Documentation** that opens the same portal as **Manage subscription**. Lifetime licenses have no recurring subscription to manage, so the **Billing** row is hidden.
### Lifetime licenses
Lifetime licenses have no recurring subscription, so the **Manage subscription** button and the profile menu **Billing** row are both hidden, and the masthead shows `DURATION: lifetime` instead of a renewal date. Deactivation, multi-node enforcement, and periodic validation work the same as for subscription licenses.
## License validation
Active licenses are re-validated every **72 hours**. If your instance goes offline, there is a **30-day grace period** before it degrades to the Community tier.
## License states
The License page renders differently depending on the license status:
| Status | Plan section | Activate section | Pricing section |
|--------|--------------|------------------|-----------------|
| **Community** | `Sencho Community` with "Free tier with the core experience." | Visible | Visible |
| **Trial** | `Sencho Admiral (Trial)` with a countdown chip | Visible (so a paid key can replace the trial) | Hidden |
| **Active subscription** | Tier name with Customer, Product, License key, plus `Manage subscription` and `Deactivate` | Hidden | Hidden |
| **Active lifetime** | Tier name with Customer, Product, License key, plus `Deactivate` only | Hidden | Hidden |
| **Expired** | `Sencho Community` with "Your license has expired. Renew to restore paid features." and a destructive **Status: Expired** field | Visible | Visible |
| **Disabled** | `Sencho Community` with "Your license has been disabled. Contact support for assistance." | Visible | Visible |
The **Pricing** section, when visible, holds a single **See pricing** button that opens [the pricing page](https://sencho.io/pricing) in a new tab so you can pick a tier and billing cadence.
<Frame>
<img src="/images/licensing/license-community.png" alt="License page on a Community-tier instance, with the masthead showing SCOPE operator and PLAN community, then the Plan section reading 'Sencho Community · Free tier with the core experience.', the Activate section with the License key input, and the Pricing section with the See pricing button" />
</Frame>
## Multi-node license enforcement
If you manage multiple servers through Sencho's [multi-node feature](/features/multi-node), you only need a license on your **control instance**. All remote nodes automatically inherit the control instance's license tier for proxied requests. No per-node activation is required.
For details on how this works, see [License enforcement across nodes](/features/multi-node#license-enforcement-across-nodes).
## Deactivating a license
To transfer your license to a different instance:
1. Go to **Settings → License**.
2. Click **Deactivate** in the Plan section.
3. On your new instance, paste the same license key into **License key** and click **Activate**.
Deactivation reverts the current instance to the Community tier immediately.
Having trouble with your license? See the [Troubleshooting](/operations/troubleshooting#license-tier-shows-the-wrong-name) page for solutions to common licensing issues.