ADR-0004: Tenancy Model — Organization, Customer, Project¶
- Status:
Superseded by ADR-0027: Tenancy Model — Platform, Organization, Project
- Date:
2026-10-01
Context¶
Ballet is intended to run an AI development shop: one operator serving many customers, each with several projects. Customer data, and in particular customer knowledge, must be legally isolated between customers. Some resources (engineering standards, devcontainer templates) are shared across the whole shop.
Decision¶
A single Ballet installation has one Organization. The organization has Customers; customers have Projects.
The customer is the hard isolation boundary for tickets, runs, knowledge, credentials and customer-scoped skills.
Knowledge is scoped to the customer: all projects of a customer share one knowledge space.
Organization-wide resources: skill registry (org scope), devcontainer templates, agent runtime definitions, role bindings.
Multiple organizations per installation (SaaS multi-tenancy) is out of scope.
Alternatives Considered¶
Project as the isolation boundary¶
Advantages:
Finest isolation.
Disadvantages:
Knowledge cannot flow between a customer’s own projects, losing cross-project lineage that customers expect.
Multi-organization SaaS¶
Advantages:
Could serve many shops.
Disadvantages:
Adds a tenancy level nobody currently needs.
Decision Criteria¶
Legal isolation, knowledge reuse within a customer, simplicity.
Rationale¶
The customer matches the legal boundary (contracts, NDAs) while still allowing a customer’s projects to share knowledge.
Consequences¶
Positive¶
One clear boundary to enforce and test.
Negative¶
No sub-isolation within a customer.
Risks¶
A customer may need isolation between its own teams. Mitigation: keep space as a separate concept in the Knowledge data model so a customer can later have more than one space.
Follow-up¶
Automated isolation tests across customers in Core and Knowledge.