A guided tour of the workspace: what the VTA and VTC are, how to operate each one, how to integrate with them, and where the design decisions live.
graph LR
concepts["01-concepts/<br/>(shared)"]
vta["02-vta/<br/>(VTA operator + integrator)"]
vtc["03-vtc/<br/>(VTC operator + integrator)"]
ref["04-reference/<br/>(tables, paths, formats)"]
design["05-design-notes/<br/>(history + implementation)"]
concepts --> vta
concepts --> vtc
vta -.-> vtc
vta --> ref
vtc --> ref
concepts -.-> design
classDef shared fill:#f5f5f5,stroke:#555,color:#111
classDef vta fill:#d4e6f9,stroke:#3a6fb0,color:#08305f
classDef vtc fill:#e9d7f7,stroke:#7e3fa6,color:#3a0a5a
classDef ref fill:#e8f5e9,stroke:#3e8e41,color:#1b3a1f
classDef design fill:#fff3e0,stroke:#c77a00,color:#5a3b00
class concepts shared
class vta vta
class vtc vtc
class ref ref
class design design
The dotted line from 02-vta/ to 03-vtc/ reflects the runtime
relationship: a VTC is always provisioned on top of an existing
VTA via the vtc-host DID template.
| Task | Start here |
|---|---|
| Understand VTI as a whole | Overview |
| Decide between VTA and VTC | Root README — Which service do you need? |
| Stand up a VTA from scratch | VTA cold-start |
| Stand up a VTC on an existing VTA | VTC getting started |
| Pick where to store the master seed | VTA secret backends |
| Deploy a VTA inside a Nitro Enclave | TEE architecture |
| Build an app that uses a VTA | VTA integration guide |
| Provision a mediator / webvh-host / custom integration | Provision-integration |
| Configure community membership policy | VTC community lifecycle |
| Host a public community website | VTC website + admin UX |
| Look up a BIP-32 path | BIP-32 paths |
| Read the threat model | Security model |
Both VTA and VTC build on the same foundation. Read this first.
- Overview — what VTI is, what VTA and VTC each do, how they relate, the technology stack, request flow.
- Architecture — workspace layout, crate map, shared module structure, API surface, how to add a new front-end binary.
- Security model — defense-in-depth, key lifecycle, threat model, attack trees, cryptographic inventory, deployment checklist.
How to operate, deploy, and integrate against a VTA.
- Cold-start — bootstrap a VTA + WebVH
- mediator from scratch.
- Non-interactive setup —
scripted VTA provisioning via
vta setup --from <file>for CI, sealed images, unattended bootstrap. - Seal and unseal — what the
seal is, when it's set, how
vta unsealworks. - Secret-storage backends — AWS, GCP, Azure, HashiCorp Vault, OS keyring, KMS-TEE.
- Feature flags — Cargo feature reference, deployment profiles, dependency graph.
- TEE architecture — Nitro Enclave deployment, KMS bootstrap, vsock store, attestation chain.
- Integration guide — building a third-party app that consumes VTA-managed keys.
- DIDComm protocol — message types, schemas, authorization, wire shapes.
- DID templates — authoring, uploading, resolution (context → global → built-in).
- Provision-integration — the canonical flow for standing up mediators, webvh hosts, and apps via DID templates and sealed-transfer.
- Runtime service management — enable / disable / migrate REST + DIDComm services on a running VTA without rebuilds.
- DID:WebVH update — log-entry format, rotation, hosting.
- Setup example —
worked TOML for
vta setup --from.
How to operate and integrate against a VTC.
- Getting started — a working VTC in 10 minutes (assumes an already-running VTA).
- Architecture — VTC module layout, keyspaces, dependency on the VTA.
- Community lifecycle — member CRUD, join requests, removal dispositions, policies.
- Credentials — VMC, VEC, status lists, renewal, DID rotation, custom endorsements.
- Trust-registry integration — registry publish, membership sync, cross-community recognition.
- Personhood + relationships — personhood assertion, VRC trust graph, custom endorsements.
- Website + admin UX — public community website (live + managed modes), embedded admin SPA, routing modes.
- Admin UX plugins — third-party
plugin contract: on-disk layout, manifest schema, scope filters,
and the daemon's
admin_ui.plugin_dirscan + serve. - Feature flags — VTC Cargo feature reference.
- BIP-32 paths — the VTA's hierarchical-key derivation specification.
- CLI style — conventions for
flags, output, errors, and JSON modes across
vta,vtc,pnm,cnm.
In-flight or historical design documents kept for context. These are implementer-facing rather than operator-facing.
- VTC MVP spec — full specification for the VTC's Phase 0–5 build (the source of truth the implementation tracks).
- Runtime service management — design notes for the VTA's enable/disable/migrate REST + DIDComm surface.
- Store migration — the enum-to-trait migration path for storage backends.
- PNM setup with deferred VTA DID — the design behind the two-phase PNM setup that allows the VTA DID to be bound after initial wallet provisioning.
- DIDComm protocol management — precursor design notes for the runtime service management work.
- Cross-references use relative links so the docs work both on GitHub and in any local Markdown viewer.
- Code references in prose use the form
path/to/file.rs:lineso IDEs can jump to them directly. - Wire-format snippets are JSON for narrative clarity; the actual on-the-wire format is whatever the linked Rust types serialize to (CBOR for sealed payloads, JSON for VPs/VCs).
- Mermaid diagrams render natively on GitHub. Where a diagram and a table convey the same information, both are kept — diagrams for the layout, tables for the lookup.
If you're adding a new document:
- Shared concept (applies to both VTA and VTC)? Add to
01-concepts/. - VTA operator / integrator how-to? Add to
02-vta/. - VTC operator / integrator how-to? Add to
03-vtc/. - Pure reference (tables, paths, formats)? Add to
04-reference/. - Implementation-detail design brief? Add to
05-design-notes/.
Update this index when you add or rename a chapter.
Cross-references in the workspace README.md and CLAUDE.md may
also need updating. The convention for paths inside Rust source
comments is docs/<section>/<file>.md.