@usenaive/region-core), so no service imports a provider SDK directly and the
cloud code paths port without behavior change.
The open / closed line
Naive is open-core. The line is drawn on a single question: does this component decide, or does it hold keys?Open (Apache-2.0) — plumbing
The parts that carry data and calls but never make the trust decision:
- the region API surface and its request handling
- the driver substrate (secrets/queue/inference/storage/runtime) and every driver implementation
- the SDK, CLI, and IaC clients
- the panel (operator/owner UI)
- the data model — schema and migrations
Closed (proprietary) — decides or holds keys
The parts whose integrity is the product:
- the governor — the enforcement engine. Every gated action is a wire call
to it; it returns
allow | deny | freezeand it owns replay + budget. - vaultd — the TPM-rooted secrets daemon. It holds the root key and derives per-tenant KEKs; plaintext never leaves it.
- the egress-gateway — the single egress-capable process on a Tower. It asks the governor before any real call and injects credentials only where it terminates a provider connection.
Enforcement lives in the closed engine, never in the open plumbing. The
region API is a thin client: on a gated action it calls the governor and does
what the verdict says. Stop the governor and the region is inert — gated
actions return
403 enforcement_unavailable. See
Security model and
Open core.The cloud → Tower driver map
Each substrate is chosen by aNAIVE_*_DRIVER env var (documented in full on
the Drivers page). Cloud defaults are the existing
production config; NAIVE_BUILD=tower flips the defaults to the on-box set.
The runtime pool is a selectable driver like any other: cloud uses the ECS warm
pool, a Tower uses
local. secrets also has a keyless file driver for
compose/CI development (no TPM).
Where to go next
Drivers
Every
NAIVE_*_DRIVER value, defaults, parity notes, the GovernorClient
contract, and how to write your own driver.Security model
The compose topology, the four load-bearing assertions, vaultd internals, and
the egress gateway’s paths and limits.
Conformance
The capability-tagged suite, KEYS.md gating, the two legs, and the two-tier CI.
Quickstart (compose)
Run a full region on one Linux box in ~10 minutes.