{
    "product": "Cenvero Stratum",
    "generated_at": "2026-08-03T07:16:16+00:00",
    "format": "cenvero-docs-v1",
    "document_count": 1,
    "documents": [
        {
            "slug": "licensing",
            "title": "Licensing",
            "category": null,
            "url": "https://stratum.cenvero.com/docs/licensing",
            "headings": [
                {
                    "level": 1,
                    "text": "Licensing"
                },
                {
                    "level": 2,
                    "text": "Plans"
                },
                {
                    "level": 2,
                    "text": "Pre-release (beta/RC) licenses"
                },
                {
                    "level": 2,
                    "text": "How a license is bound"
                },
                {
                    "level": 2,
                    "text": "Tamper-proof by design"
                },
                {
                    "level": 2,
                    "text": "Enforcement: warn → grace → freeze"
                },
                {
                    "level": 2,
                    "text": "Revocation"
                },
                {
                    "level": 2,
                    "text": "Offline and air-gapped nodes"
                },
                {
                    "level": 2,
                    "text": "Renewing"
                },
                {
                    "level": 2,
                    "text": "Coupons and invoices"
                },
                {
                    "level": 2,
                    "text": "Next steps"
                }
            ],
            "word_count": 853,
            "markdown": "# Licensing\n\nCenvero Stratum is licensed per node. A license is a digitally signed document\nthat binds a plan and an expiry to a specific machine. The agent verifies it\ncryptographically on every boot and re-checks it continuously while running.\n\n## Plans\n\nStratum is licensed **per node**, billed on the term you choose (monthly or\nlonger). The current plans, their features and rates are shown on the\n[pricing section of the site](/#pricing) — plans are configured in the management\npanel, so this page never carries stale numbers. For large-scale, air-gapped or\nbespoke arrangements, **contact sales**.\n\nThe self-service plans have **no minimum node count**. Large fleets, air-gapped,\nor custom-SLA deployments are arranged as bespoke agreements with sales.\n\nLicenses are **never issued automatically**. You place an order — which\nimmediately raises an invoice you can pay against — follow the payment\ninstructions, and submit your payment proof; an admin verifies it, the invoice is\nmarked paid, and your license is issued and appears in your account. There is no\ninstant self-service issuance: every license is tied to a verified order.\n\n## Pre-release (beta/RC) licenses\n\nBeta and release-candidate builds run on a separate **pre-release** track and\nrequire a special **pre-release license**. These are **issued directly by an\nadministrator** — there is no order or payment flow for them — and may be bound\nto a customer account or left internal (for your own testing), with an admin-set\nexpiry.\n\nThe gate is strict, both ways: a normal (stable) license can neither download nor\nrun a beta/RC build, and a pre-release license runs **only** beta/RC builds — not\nstable. The channel is written into the *signed* license, so the agent enforces\nit offline and **fails closed** (refuses to operate) on a mismatch. See\n[Upgrades → Release channels](/docs/upgrades) for the build/release side.\n\n## How a license is bound\n\nWhen you activate, the agent derives a stable **hardware ID** that is unique to\nthat physical server. Your license is cryptographically bound to it, so a license\ncopied to a different machine simply will not work there. Stratum is licensed for\nbare-metal servers.\n\n```bash\nsudo cenvero-str-ctl license activate CNVR-XXXX-XXXX-XXXX-XXXX\ncenvero-str-ctl license status\n```\n\n```text\nplan         enterprise\nserial       7F3A-21C9-...\nissued_to    acme-corp\nhardware_id  9b2c… (matches this host)\nvalid_until  2026-07-04T00:00:00Z\nstate        active   (27 days remaining)\n```\n\n## Tamper-proof by design\n\nEvery license is **cryptographically signed by Cenvero** and verified by the\nagent independently, on each node, both at boot and continuously while running.\nA license that has been altered, forged, or is not genuinely Cenvero-issued is\nrejected — there is nothing on the node you can edit to extend or fake a license.\nVerification happens locally, so it works even when the node is offline.\n\n## Enforcement: warn → grace → freeze\n\nStratum **never hard-stops your network.** Existing endpoints, forwarding, DHCP,\nDNS, and the firewall keep working regardless of license state. Enforcement only\ngoverns *changes*, and it escalates gently:\n\n| State | When | Effect |\n|-------|------|--------|\n| **Active** | License valid | Everything works normally |\n| **Warning** | ≤ 7 days to expiry | Full functionality; renewal reminders logged |\n| **Grace** | ≤ 14 days *after* expiry | Full functionality continues; renew now |\n| **Frozen** | Past grace, or revoked, or a license that fails verification | Existing traffic keeps running; **new or changing operations are blocked** until you renew |\n\nIn the Frozen state, commands that mutate state (creating networks, attaching\nendpoints, editing the firewall) return exit code `4`. Read-only commands and the\ndata plane are unaffected.\n\n## Revocation\n\nA license can be **revoked** by Cenvero — for example after a refund or a\nterms violation. The agent checks revocation status periodically, and a node\nwhose license has been revoked moves to **Frozen** (existing traffic keeps\nrunning; changes are blocked until the license is restored or replaced).\nRevocation is honoured even offline, and a revocation cannot be quietly undone\nby a tampered or spoofed server.\n\n## Offline and air-gapped nodes\n\nNodes do not need continuous connectivity. The signed license is cached locally,\nso an isolated node keeps running on its cached license. Air-gapped operation\nwith offline activation is available for bespoke deployments — contact sales.\n\n## Renewing\n\n```bash\n# After renewing in the panel, pull the refreshed license\nsudo cenvero-str-ctl license refresh\n```\n\nA node in Warning, Grace, or Frozen returns to Active the moment it receives a\nvalid, longer-dated license.\n\n## Coupons and invoices\n\nIf you have a **coupon code**, enter it when you place your order — the discount\nis applied to the order total once the code is validated (it must be active,\nin date, within its usage limits, and applicable to your plan). Each code can be\npercentage- or fixed-amount.\n\nAn **invoice is raised as soon as you place an order**, so you always have a\nnumbered document to pay against and to give your finance team. You will find it\nunder **Invoices** in your account, marked *awaiting payment*, with a **Pay**\nbutton that takes you to the payment instructions for that order.\n\nOnce we verify your payment the same invoice is marked **paid** — there is one\ninvoice per order, and it keeps its number throughout. You can download the PDF\nat any time, whether it is still outstanding or already settled.\n\n## Next steps\n\n- **[Installation](/docs/installation)** — activation during setup.\n- **[Upgrades](/docs/upgrades)** — keeping the agent current.\n"
        }
    ]
}