5. Building block view
The system is organized into planes, split by the constitution's hot-path/core line. The two structural diagrams are diagrams/c4-container.mermaid (the planes as containers) and diagrams/hot-path-boundary.mermaid (what sits above versus below the rule-1 line — the single most important picture in this document).
5.1 The planes
- Vör — the verification plane (edge, stateless). Parses and verifies tokens and credentials (EdDSA/ES256), consults the cached status list and JWKS, returns a decision. Its contract carries no core handle, so a core read is a type error (ADR-0010). This is the rule-1 hot path.
- Modgud — the admission / issuance plane (regional, stateful). Owns the OAuth/OIDC authorize and token endpoints, the login ceremony, the SSO session, and later the SAML front-channel. May read and write the core; not the hot path (ADR-0009).
- Forseti — the authorization plane. The
Authorizertrait over a Zanzibar-style relationship engine (SpiceDB/OpenFGA in production, Cedar embedded in dev), fenced by a consistency token where needed (ADR-0006, ADR-0004). Its callers are placed explicitly: authorization checks run at issuance (Modgud) and behind theAuthorizerseam in services and SDK middleware — never per-request inside Vör's verification hot path. Token verification and relationship checks are separate operations; the relation store is a strongly-consistent domain rule 1 keeps off the hot path exactly as it does the core (ADR-0001, ADR-0026). - Troth — the credential primitive. SD-JWT VC issuance and selective-disclosure verification (ADR-0003).
- The core. Issuance, uniqueness, and freshness-critical revocation on Wyrd's metadata tier — the strongly-consistent identity domain; with Forseti there is a second such domain, its relation store (ADR-0026, rule 2 read per-domain).
- The directory. Principals, accounts, groups, and credentials as small schema-versioned records on the core (ADR-0011).
- The projection publisher. The single producer of every edge-consumed
projection — the JWKS and the signed status list — on the CQRS path of
ADR-0022, signing them with the
distribution key (distinct from token-signing keys,
ADR-0043). The
public verification surface (§3.2) — the JWKS and
status-list endpoints — is served by the edge/distribution layer but
produced only here; the
StatusListPublishertrait has its runtime home in this component. - The SDK. The thick client that propagates the consistency token across services (ADR-0004).
5.2 Composed surfaces
- The OIDC issuer — the v1 product, composed of Modgud + Vör + the directory + keys + Forseti (ADR-0014).
- The SAML IdP (roadmap) — attaches to Modgud's front-channel (ADR-0017).
- SCIM (roadmap) — a management-plane provisioning surface (ADR-0018).
- The management API — tenant/realm/client/policy/key administration, authorized by Vord's own Forseti (ADR-0021).
5.3 Cross-cutting crates
The workspace (ADR-0013) is the
keystone vord-traits (every seam — KeyCustody, CredentialVerifier,
Authorizer, CredentialStore, SessionStore, StatusListPublisher,
EventSink), vord-format (the spec-first token/credential codec), vord-core
(the plane logic + embedded backends), vord-server (the only crate that wires
concretes), testkit (the DST harness), and xtask.