---
title: "Entity Hierarchy — KYE Protocol™"
description: "The v3 KYE Protocol™ entity containment tree: Tenant siblings, Workspace siblings, and first-class Model, Tool, External App, and Audit Stream entities"
url: https://kyeprotocol.com/hierarchy/
lang: en
source: "KYE Protocol"
---

> The v3 KYE Protocol™ entity containment tree: Tenant siblings, Workspace siblings, and first-class Model, Tool, External App, and Audit Stream entities

KYE Protocol™

# 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.

1 · The containment tree

## 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.

Illustrative example — one Tenant’s live containment tree.

- Tenant · isolation root Northwind Financial `kye:tenant:northwind:root:t_8f3a` Legal Entity Northwind Financial plc `kye:lglent:northwind:uk:le_21b8` Billing Account Enterprise · GBP `kye:bill:northwind:main:ba_0c44` Workspace · environment prod-eu-consumer `kye:wsp:northwind:prod-eu:ws_5a91` Workspace contains · 8 scoped entities Project AML Alert Triage `kye:prj:northwind:aml:pr_4f22` Team Financial Crime Ops `kye:team:northwind:fincrime:tm_7b03` Resource alerts-db · D1 `kye:res:northwind:alerts:rs_1c88` Principal AML Copilot · Agent `kye:prin:northwind:aml-agent:pn_6d40` Model v3 frontier-llm · v4 `kye:model:northwind:aml:md_2a19` Tool v3 sanctions.screen() `kye:tool:northwind:screen:tl_5e77` External App v3 Companies House connector `kye:extapp:northwind:ch:xa_9012` Audit Stream v3 SIEM · Splunk `kye:audstream:northwind:siem:as_3f56` Domain northwind.finance `kye:dom:northwind:primary:dm_9e12` Policy Bundle DORA · ISO 42001 `kye:pol:northwind:eu:pb_3d70`

Scroll sideways to trace the full tree →

Each entity also carries a `state` field and a `state_machine_id`. See [State Registry™](https://kyeprotocol.com/state-registry/).

2 · Tenant level

## 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.

### Legal Entity

kye:lglent:… The regulator-facing registered legal person. One Tenant may hold multiple Legal Entities (group structure, foreign subsidiaries).

### Billing Account

kye:bill:… Stripe customer ID, payment method, billing email, tax ID, currency. One Tenant may hold multiple Billing Accounts (split billing per business unit).

### Domain

kye:dom:… A verified DNS domain the Tenant owns. Used for branded sender, federation routing, and SSO.

### Policy Bundle

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).

### Workspace

kye:wsp:… Environment or dataspace. One Tenant may hold many Workspaces (prod, sandbox, eu-west-1, consumer-bank, corporate-bank).

3 · Workspace level

## 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.

### Project

kye:prj:… A unit of work with a scoped budget and quota. One Operating Model fragment per Project.

### Team

kye:team:… RBAC and ownership group. Controls who owns what, defines the bounded delegation surface, and routes approvals.

### Resource

kye:res:… A datastore table, object-store bucket, queue, or connector owned by the Workspace. Resources are leaves — they do not contain other entities.

### Principal

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.

### Model v3

kye:model:… A versioned inference artefact (LLM, vision model, embedding model). Carries `provider`, `family`, `version`, and `weights_hash`.

### Tool v3

kye:tool:… A named callable (function, MCP tool, API endpoint). Carries `function_signature`, `declared_capabilities[]`, and `side_effects[]`.

### External App v3

kye:extapp:… A 3rd-party integration or partner connector acting on behalf of the Tenant. Carries `partner_org_id`, `connector_kind`, and `oauth_subject`.

### Audit Stream v3

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.

4 · v3 changes

## 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_class` enum.** A `kye:prin:…` entity in v3 has `principal_class` of `human`, `system`, or `agent` only.
- **Agent Principals reference Models and Tools by entity ID.** An agent's record holds `model_entity_id` (a `kye:model:…` URN) and `tool_entity_ids[]` (a list of `kye: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 as `kye: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](https://kyeprotocol.com/vocabulary/).

Canonical KYE™ surfaces referenced on this page: [KYE Protocol™](https://kyeprotocol.com/).
