Pulse/cmd
rcourtman 185c6ac80b Let a provider-hosted platform buy and renew its own licence
A provider could stand the MSP bundle up and evaluate it without asking
anyone, but paying still meant emailing its public key to Pulse and
copying a licence file onto the host by hand. With the licence server's
self-serve purchase path (pulse-pro license-server/provider_msp_purchase),
the control plane can do the whole thing itself.

The control plane now signs a challenge with its lease signing key to
fetch the licence its subscription entitles, validates it exactly as
startup does, requires it to bind this platform's key, and keeps it in
the data directory, because the host licence is a read-only secret
mount. Startup prefers that renewed licence while it validates, so a
paying provider keeps starting after the self-issued evaluation on the
host expires. A changed licence restarts the control plane through the
existing graceful shutdown, since the plan version is read at load by
every workspace-limit, backup and status path; client workspaces keep
running. Preflight, proof, recovery and backup accept either signed
source.

The portal gains owner and admin routes for plan state, checkout, the
Stripe billing portal and an immediate licence refresh, and the plan list
comes from the licence server so it shows only what can be bought, at
Stripe's price. Adds the msp_solo plan: 3 client workspaces, the first
paid step above the 2-workspace evaluation.
2026-09-23 23:30:34 +01:00
..
agent-probe backend and governance: MCP contract, agent capabilities, API, and release-control 2026-06-23 17:26:15 +01:00
eval Cover eval CLI parsers, cloud audit predicates and vmware fixture fetching 2026-07-23 08:07:35 +01:00
hashpw feat: remove Enterprise badges, simplify Pro upgrade prompts 2026-01-09 16:51:08 +00:00
mutation-registry-audit Enforce the canonical mutation plane 2026-07-11 15:19:41 +01:00
patrol-qualify Pin Patrol qualification routes per suite 2026-07-15 09:46:53 +01:00
pulse Clear all errcheck and gofmt violations so make lint gates on real findings 2026-06-09 21:42:21 +01:00
pulse-agent feat(agent): allow disabling Proxmox peer sensor collection 2026-09-23 08:18:44 -06:00
pulse-agent-helper Keep helper rollback recovery persistent 2026-09-01 00:26:37 +01:00
pulse-agent-runner Contain typed action subprocesses with systemd 2026-09-01 01:26:39 +01:00
pulse-control-plane Let a provider-hosted platform buy and renew its own licence 2026-09-23 23:30:34 +01:00
pulse-mcp Preserve canonical Patrol planning and outcome continuity 2026-09-07 17:24:25 +01:00