Panella docs · Tenancy

Tenancy (Draft)

Draft / evolving contract, subject to change before v1. This page sketches the tenancy port as it exists in the code today. A formal multi-tenant conformance contract is forthcoming; do not treat this as a stable spec.

The idea

Panella scopes memory by tenant. A principal belongs to a tenant, and it may read and mutate rows only within the tenant(s) its scope allows. The default deployment is single-tenant (one owner, one default tenant); the tenancy port is the seam that keeps a box honest if and when more than one tenant shares a store.

Where isolation is enforced today

Tenant isolation is enforced at the client / query layer — see panella/client.py:

The intent of the port: a caller can only ever see or change rows in a tenant it owns, and any ambiguity resolves to a refusal.

What is not settled yet

This is a stub, not a specification. Still open, and expected to change before v1:

Until that contract lands, treat single-tenant self-host as the supported shape and read the code as the source of truth for isolation behavior.

Canonical source: docs/TENANCY.md on GitHub — the repository is the single source of truth; this page is rendered from it.