> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stackra.figentra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 0461 — The Pro line for 0.1.0: runtime code is free behind plan entitlements; @stackra-pro holds new studios and advanced drivers

> Accepted · 2026-10-27

> [!NOTE]
>
> Amended 2026-10-28 (STA-1371) by
> [0469](https://docs.stackra.figentra.com/adr/0469-stackra-ships-no-heroui-pro-free-heroui-and-stackras-own-components-only.md):
> decision 3 and the `design-system/ui-pro` row of decision 6 are withdrawn. HeroUI refused
> redistribution, so `@stackra-pro/ui` is removed, not kept internal; Figentra's product apps that
> use HeroUI Pro import it directly. The other decisions stand.

> [!NOTE]
>
> Accepted 2026-10-27 (STA-1355, batch stackra-203): owner decision D6 of the Stackra finish plan.
> Amends [0077](https://docs.stackra.figentra.com/adr/0077-open-core-free-and-pro-lists.md) (decision 7, the Pro list),
> [0202](https://docs.stackra.figentra.com/adr/0202-stackra-pro-is-developer-side-os-capability-is-free-code.md) (decisions 1 and 2, for
> new studio UIs only), [0310](https://docs.stackra.figentra.com/adr/0310-stackra-ui-pro-private-heroui-pro-wrappers.md) (the name, the
> source repository and the channel of `@stackra-pro/ui`) and
> [0453](https://docs.stackra.figentra.com/adr/0453-the-stackra-registry-one-npm-compatible-store-on-cloudflare-and-our-own-licence-engine.md)
> (decision 10, a per-name `internal` rule inside `@stackra-pro`). Reserved number: 0461, the next
> free after 0460 (stackra-50).

## Context

[0077](https://docs.stackra.figentra.com/adr/0077-open-core-free-and-pro-lists.md) listed whole areas as Pro. Later accepted ADRs moved most of them back
to free code: [0202](https://docs.stackra.figentra.com/adr/0202-stackra-pro-is-developer-side-os-capability-is-free-code.md) (editors, AI, settings and
search parity are free code gated by entitlements), [0240](https://docs.stackra.figentra.com/adr/0240-scope-tree-is-free-code-with-depth-by-plan.md) and
[0327](https://docs.stackra.figentra.com/adr/0327-scope-package-owns-the-scope-tree-tenancy-is-a-consumer.md) (the scope tree is free code in
`@stackra/scope`), and [0310](https://docs.stackra.figentra.com/adr/0310-stackra-ui-pro-private-heroui-pro-wrappers.md) (the HeroUI Pro wrappers are not
for sale). Decision D5 (2026-10-27) then said "the 0077 list is paid" for 0.1.0, and the stackra-186 audit
(`notes/handover/batches/pro-split-audit.md`) filed sixteen split batches (stackra-187 to 202) with an owner gate on
each conflict. Several splits were impossible or harmful as written: free `@stackra/builder/react`,
`@stackra/loyalty-kit`, `@stackra/tenancy`, OS and Commerce import the code that would have moved. The owner settled
the line in D6 (2026-10-27): the 0202 model.

## Decision

1. **Runtime code is free, behind plan entitlements.** Every runtime, kernel, port, kind, driver and React hook that
   exists in `@stackra/*` today stays there, MIT. What a customer pays for at runtime is an entitlement checked by the
   pipeline ([0202](https://docs.stackra.figentra.com/adr/0202-stackra-pro-is-developer-side-os-capability-is-free-code.md) decision 5,
   [0242](https://docs.stackra.figentra.com/adr/0242-commercial-model-plan-ladder-add-ons-metric-and-trial.md) limits), never a package tier. Nothing moves out of a free package to Pro.

2. **`@stackra-pro/*` holds new code only, of two kinds.**

   * **Paid UIs and studios**, new packages over free runtimes:
     `@stackra-pro/builder-studio` (dashboard, page, form, experience-block and automation editor UIs over the free
     builder kernel and `@stackra/builder/react` hooks; stackra-188), `@stackra-pro/ai-studio` (agent builder,
     registry UI and eval workspace over the free `@stackra/ai` runtime and `runEvals`; stackra-197),
     `@stackra-pro/devtools` (the web and native floating panel and the service dev console of [0246](https://docs.stackra.figentra.com/adr/0246-devtools-dev-only-for-apps-and-services.md) over the free
     `@stackra/devtools-kit`; stackra-198) and `@stackra-pro/notifications-studio` (the visual template editor and
     the delivery analytics dashboard over the free template cascade and channel ports; stackra-199).
   * **Advanced drivers** behind free ports: `@stackra-pro/search-meilisearch` and `@stackra-pro/search-opensearch`
     (`SearchDriver`, each passing the free conformance suite published from `@stackra/search/testing`;
     stackra-195), and `@stackra-pro/analytics-destinations` (further `AnalyticsDriver` destinations behind the
     consent-gated queue; PostHog stays free; stackra-196).

   This amends [0202](https://docs.stackra.figentra.com/adr/0202-stackra-pro-is-developer-side-os-capability-is-free-code.md) decision 1 (as amended by
   [0270](https://docs.stackra.figentra.com/adr/0270-builder-architecture-one-editor-kernel-document-kinds-and-collaboration-levels.md)) for the studio
   editor UIs, none of which exists today: they are new Pro code, and the editor kernel and hooks they sit on stay
   free. Its decision 2 list (on-prem stack, advanced drivers, devtools UI) stands and gains the studios.

3. **`@stackra-pro/ui` is internal-only and never sold.** The HeroUI Pro wrapper package keeps the name
   `@stackra-pro/ui` (its `package.json` name today), moves to `figentra/stackra-pro` (stackra-189) and is served
   by our registry under the `internal` read rule of
   [0453](https://docs.stackra.figentra.com/adr/0453-the-stackra-registry-one-npm-compatible-store-on-cloudflare-and-our-own-licence-engine.md)
   decision 10, as a per-name row inside the `@stackra-pro` scope: only Figentra's own internal tokens read it, and a
   customer licence grant, `names: "*"` included, never covers it. Its Keygen `publishConfig` is dropped. HeroUI Pro
   stays an external peer that each consuming repository installs with its own HeroUI Pro token
   ([0310](https://docs.stackra.figentra.com/adr/0310-stackra-ui-pro-private-heroui-pro-wrappers.md) decisions 3 and 7 stand). Kiosk stays free code in
   `@stackra/ui`; embeds and broadcast dashboards are out of scope for 0.1.0.

4. **`@stackra/licensing` stays free.** It keeps the `LicenceIssuer` and `LicenceVerifier` ports, the `registry`
   own-issuer driver (default) and the optional `keygen` driver of
   [0453](https://docs.stackra.figentra.com/adr/0453-the-stackra-registry-one-npm-compatible-store-on-cloudflare-and-our-own-licence-engine.md)
   decision 15, in `figentra/stackra`.

5. **Cancelled split batches, and why the code stays free.**

   | Batch | 0077 item | Why it stays free |
   | - | - | - |
   | stackra-187 | Admin resource kit; billing admin UI | `@stackra/panel` and `./react` are runtime imported by free loyalty-kit and tenancy and by OS and Commerce consoles; billing screens are OS code (0202) |
   | stackra-190 | Presence and co-editing | `@stackra/collaboration` is runtime imported by free `@stackra/builder/react`; live collaboration is the `LiveCollaborationEntitlement` |
   | stackra-191 | SSO, SCIM, phone sign-in, OAuth provider; advanced audit | identity over ZITADEL and the access-log hash chain are runtime used by OS identity and audit; SSO and audit retention are plan entitlements (0242) |
   | stackra-192 | Scope tree, DB-per-scope, move, Zanzibar engine, service tokens | the scope tree is free code by 0240 and 0327 and free iam, identity and tenancy import it; depth is a plan entitlement; silo and relations engines are not built and would be runtime |
   | stackra-193 | Plans, metering and quotas engine | `@stackra/entitlements` is the gate itself: OS, Commerce and free content, builder, collaboration, panel and scope import it; a free install needs a working driver |
   | stackra-194 | Compliance pack | not built and no ADR names its contents; market-pack, consent and access-log contracts stay free |
   | stackra-200 | `@stackra/licensing` | decision 4: the licence engine of 0453 is free code with no Pro dependent |
   | stackra-201 | Per-scope white-label theming | themes are data the free `@stackra/tokens` renderer reads; white-label is a plan entitlement (0242) |
   | stackra-202 | Runtime content types | runtime over the free custom fields of `@stackra/content`; marked "later" in 0077; the custom field limit is an entitlement |

6. **Per-package tier table.** The audit's table of 106 packages, amended by D6. Every package not listed is `free`
   with no Pro part.

   | Package | Tier | Pro part (new code in figentra/stackra-pro) | Batch |
   | - | - | - | - |
   | `application/ai` | free + studio | `@stackra-pro/ai-studio` | stackra-197 |
   | `communication/notifications` | free + studio | `@stackra-pro/notifications-studio`; failover stays the free `ProviderResolver` of `@stackra/integrations` | stackra-199 |
   | `cross-cutting/analytics` | free + driver | `@stackra-pro/analytics-destinations`; PostHog stays free | stackra-196 |
   | `data/search` | free + driver | `@stackra-pro/search-meilisearch`, `@stackra-pro/search-opensearch` | stackra-195 |
   | `developer/devtools-kit` | free + studio | `@stackra-pro/devtools` | stackra-198 |
   | `experience/builder` | free + studio | `@stackra-pro/builder-studio`; kernel and `./react` hooks stay free | stackra-188 |
   | `runtime/workflow` | free + studio | the automation editor in `@stackra-pro/builder-studio` | stackra-188 |
   | `design-system/ui-pro` | internal | the whole package, `@stackra-pro/ui`, moved, never sold | stackra-189 |
   | `security/licensing` | free | none (decision 4) | - |
   | `experience/panel`, `experience/collaboration`, `experience/experience`, `design-system/ui`, `design-system/tokens`, `security/access-log`, `security/entitlements`, `security/iam`, `security/identity`, `security/scope`, `security/tenancy`, `data/content`, `data/database`, `state/theming`, `communication/integrations` | free | none (decision 5) | - |

   Totals for 0.1.0: 105 free packages in `figentra/stackra`; one internal package and seven new paid packages in
   `figentra/stackra-pro`.

7. **The rules of 0077 decision 4 and 0202 decision 4 stand.** A Pro package plugs in behind a free contract, depends
   on released `@stackra/*` versions, and no member of `figentra/stackra` imports `@stackra-pro/*`. Figentra's own
   products take Pro packages under the internal licence.

## Consequences

* Free installs get every runtime; a customer's plan, not a package, switches a feature on.
* No free package loses code, so OS, Commerce and the products need no change for 0.1.0.
* `figentra/stackra-pro` starts with eight members, all new or moved code with no free dependent.
* The registry needs a per-name `internal` row inside `@stackra-pro` before stackra-189 publishes (stackra-182 and
  stackra-183 own the Worker and grant logic).
* Core `apps/mobile` and `apps/playground` stop depending on `@stackra-pro/ui` (stackra-189).

## Enforcement

* `tools/scripts/validate-repository.mjs` (with `PRO_DEPENDENCIES` from `@stackra/repo-checks`) keeps refusing a
  non-app member that depends on `@stackra-pro/ui` or HeroUI Pro.
* planned — the same validator refuses any member of this repository that depends on any `@stackra-pro/*` name
  (0077 Enforcement), once stackra-189 has removed the app dependencies.
* planned — `workers/registry` refuses a read of an `internal` name with a customer licence token, with its test
  beside the read-rule code (stackra-182, stackra-183).

## Supersedes and sources

Supersedes: none. Amends: [0077](https://docs.stackra.figentra.com/adr/0077-open-core-free-and-pro-lists.md) decision 7,
[0202](https://docs.stackra.figentra.com/adr/0202-stackra-pro-is-developer-side-os-capability-is-free-code.md) decisions 1 and 2,
[0310](https://docs.stackra.figentra.com/adr/0310-stackra-ui-pro-private-heroui-pro-wrappers.md) decisions 1 and 2 as amended (name, repository and
channel), [0453](https://docs.stackra.figentra.com/adr/0453-the-stackra-registry-one-npm-compatible-store-on-cloudflare-and-our-own-licence-engine.md)
decision 10. Related: [0240](https://docs.stackra.figentra.com/adr/0240-scope-tree-is-free-code-with-depth-by-plan.md),
[0327](https://docs.stackra.figentra.com/adr/0327-scope-package-owns-the-scope-tree-tenancy-is-a-consumer.md),
[0246](https://docs.stackra.figentra.com/adr/0246-devtools-dev-only-for-apps-and-services.md), [0089](https://docs.stackra.figentra.com/adr/0089-search-fresh-with-pro-engine-drivers.md). Sources: owner decision D6,
2026-10-27 (`notes/handover/batches/STACKRA-FINISH.md`, `PUBLISH-TIERS.md`); the stackra-186 audit
(`notes/handover/batches/pro-split-audit.md`); Linear STA-1355 and STA-1339 to STA-1354.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.