Skip to main content

Default workspaces, inboxes and feeds

Before anyone creates anything, the platform has already created something for them. Every entity has a home workspace, provisioned at the moment the entity is created, and it is the reason a person, an agent, a service account or a device can be addressed, messaged and given work the instant it exists.

The universal home invariant​

There is one idempotent entry point that every entity-creation path calls, so that no entity ever exists without a workspace. It dispatches on the entity kind, one of the six canonical kinds (user, organization, node, agent, device, service account), to the right per-kind provisioner.

Calling it twice for the same entity returns the same workspace, never a duplicate. A setup step sweeps for any entity that predates the wiring and homes it, and the sweep is per-entity fail-soft so it can never abort a bring-up.

Why this is called a home

The model is deliberately the one a Unix home directory follows: the account is not usable until it has somewhere to put things and somewhere to be reached. A workspace is that place, and the platform will not let an entity exist without one.

What provisioning creates​

Every home workspace comes out of provisioning with all of this already in place:

CreatedWhat it is
The workspace recordWith a scope_kind binding that says what kind of home it is
A dedicated storage namespaceAn object-storage bucket of its own, so isolation is structural rather than a prefix convention
An inbox subjectThe addressable destination on the message bus for anything sent to this entity
Default streamsInbox, feed and alerts, depending on the kind
Owner membershipThe entity is the owner of its own home
Default-workspace markingOn first provision the workspace is marked the subject's default, which is what makes it the entity's inbox home

A home is also bound to a service group, and that binding is what makes the workspace, and therefore its owner's inbox and feed, actually deliverable rather than merely recorded.

What each entity kind gets​

The stream set is not uniform, and the differences are deliberate.

Entity kindInboxFeedAlertsNotes
UserYesYesYesThe full home. A person has a social surface as well as a mailbox
OrganizationYesYesYesKeyed on the organization's base id rather than its entity id
NodeYesYesYesKeyed on the node's base id
AgentYesYesYesAn agent is staff, so it gets a personnel-shaped home
Service accountYesNoYesThe service stream set. A headless principal has no social feed
DeviceYesNoYesThe minimal home. Reachable and alertable, with no feed

A service account and a device both stay entity-scoped homes. They are reachable and alertable because a headless principal still has to be told things, and it still has to be able to raise something. What they do not get is a feed, because there is nobody on the other side of it.

An organization or a node resolves its home from its base id rather than its entity id, because those homes key on the organization or node itself. A base id that does not resolve raises rather than binding the home to the wrong owner, which is the fail-closed choice: a misattributed inbox is worse than a missing one.

Why every entity needs one​

Three things follow from the invariant, and they are why it is worth the cost of provisioning homes nobody asked for.

Addressability. An entity with an inbox subject can be sent a message, delegated a task, or handed a signed job envelope. Without a home there is nothing to address.

Attribution. Work done by an entity lands somewhere that belongs to that entity, under its own membership, with its own storage namespace. Cost, classification and audit attach to a scope that exists rather than to a null.

A surface to govern. A workspace is the unit that carries policy, residency, lifecycle and access. An entity without one is an actor the governance model cannot reach.

Homes are not the only workspaces​

A home workspace is where an entity is. It is not where a team's work necessarily happens. Beyond the automatic home you create:

  • Collaboration workspaces, the ordinary shared environments a team works in;
  • Clean rooms, where two or more trust domains collaborate without trusting each other.

Both are covered in workspaces and clean rooms, and choosing a boundary is the decision between them.