Multi-tenancy: strict per-connection isolation

One scratchpad stream on one literal topic. With Acme active, everything this connection touches lives under @t/acme/... - the Globex tab literally cannot subscribe to it, not even by hand-rolled wire frames. The handlers are byte-identical to a single-tenant app; the framework scopes the topics, the app scopes its own Redis keys via ctx.tenantId.

Active tenant (server-trusted, from ctx.tenantId)
none confirming over WS...

Switching reloads the page: the tenant resolver runs once per connection at WebSocket upgrade, never mid-connection.

While a tenant is active, EVERY demo page on this site is isolated to it - presence counts, boards, chat. Clear the tenant to return to the shared world.

Public scratchpad last 20 notes, live

  • No notes in this scope yet.