Every entity has one parent and one state machine.
KYE Protocol™ organizes every governed entity in a single containment tree rooted at the Tenant. In v3, Model, Tool, External App, and Audit Stream are first-class entities with their own IDs, state machines, and authority grants — not subtypes of Principal.
One tree. 14 entity classes. No orphans.
Every entity lives at exactly one node. The parent chain is required at every level. You can traverse from any leaf up to the Tenant root in at most four hops.
Tenant (kye:tenant:…) — billing + isolation root
├── Legal Entity (kye:lglent:…) — registered legal person
├── Billing Account (kye:bill:…) — Stripe customer + payment
├── Domains (kye:dom:…) — verified DNS domains
├── Policies (kye:pol:…) — Operating Model™ + rules
└── Workspaces (kye:wsp:…) — environment / dataspace
├── Projects (kye:prj:…) — units of work
├── Teams (kye:team:…) — RBAC + ownership group
├── Resources (kye:res:…) — datastore / object store / queue / connector
├── Principals (kye:prin:…) — Human / System / Agent
├── Models (kye:model:…) — inference artefacts (v3)
├── Tools (kye:tool:…) — named callables (v3)
├── External Apps (kye:extapp:…) — 3rd-party integrations (v3)
└── Audit Streams (kye:audstream:…) — event destinations (v3)
Each entity also carries a state field and a state_machine_id. See State Registry™.
Five siblings directly under the Tenant.
The Tenant is the billing and isolation root. Its five siblings are independent — they do not nest inside each other.
kye:lglent:…
The regulator-facing registered legal person. One Tenant may hold multiple Legal Entities (group structure, foreign subsidiaries).
kye:bill:…
Stripe customer ID, payment method, billing email, tax ID, currency. One Tenant may hold multiple Billing Accounts (split billing per business unit).
kye:dom:…
A verified DNS domain the Tenant owns. Used for branded sender, federation routing, and SSO.
kye:pol:…
Active Operating Model™, rule bundles, attestation policies, and sub-processor list. One Tenant may hold multiple bundles (one per regime: PRA / DORA / EU AI Act).
kye:wsp:…
Environment or dataspace. One Tenant may hold many Workspaces (prod, sandbox, eu-west-1, consumer-bank, corporate-bank).
Eight siblings inside every Workspace.
The Workspace is the environment boundary. Every entity below it is scoped to that Workspace — its authority grants, state machines, and audit events are all Workspace-local unless an explicit cross-Workspace grant exists.
kye:prj:…
A unit of work with a scoped budget and quota. One Operating Model fragment per Project.
kye:team:…
RBAC and ownership group. Controls who owns what, defines the bounded delegation surface, and routes approvals.
kye:res:…
A datastore table, object-store bucket, queue, or connector owned by the Workspace. Resources are leaves — they do not contain other entities.
kye:prin:…
The acting party in a Decision Map™. In v3, Principal subtypes are: human, system, agent. Model, Tool, and External App are now separate entity classes.
kye:model:…
A versioned inference artefact (LLM, vision model, embedding model). Carries provider, family, version, and weights_hash.
kye:tool:…
A named callable (function, MCP tool, API endpoint). Carries function_signature, declared_capabilities[], and side_effects[].
kye:extapp:…
A 3rd-party integration or partner connector acting on behalf of the Tenant. Carries partner_org_id, connector_kind, and oauth_subject.
kye:audstream:…
An append-only event-log destination (SIEM, S3, Splunk, Kafka topic) the Workspace writes to. Governed by an authority grant, not an IAM binding.
What changed from v2 to v3.
In v2, Model, Tool, and External App were subtypes inside the Principal entity via the principal_class field. In v3 they are first-class entities with their own IDs.
- Model, Tool, External App removed from
principal_classenum. Akye:prin:…entity in v3 hasprincipal_classofhuman,system, oragentonly. - Agent Principals reference Models and Tools by entity ID. An agent's record holds
model_entity_id(akye:model:…URN) andtool_entity_ids[](a list ofkye:tool:…URNs). - Audit Stream added. A new class
kye:audstream:…for append-only event destinations. - Relationships are explicit edges. The five canonical edges (
member_of,acts_in,granted_access_to,uses,applies_to) are stored askye:rel:…records, not inferred from nesting. - Migration window. Existing tenants have until 2026-08-14 to migrate v2 Principal records to the new classes. Both representations are valid during the window.
Learn more about entity relationships: Vocabulary.