Skip to main content

ESS specification

Secrets is specified in ESS. This page and the domain pages below are generated from the repository's spec/ directory by secrets-docs: the graphs from ess specify compile, the pages from ess generate --kind docs. They change when the specification changes, and task check fails if they fall behind it.

custody is retrofitted from the shipped service and every declaration cites its source; a conformance suite runs it against the real HTTP router and PostgreSQL store. storage is the model of named, scoped secrets over several backends; secrets-core implements its storage port, and a second suite runs that in process. No backend implements it yet.

custody​

Encrypted, tenant-scoped custody of secret values, their revocation and deletion, and atomic prepared mutation batches.

ESS domain · secrets.custody

custody

Encrypted, tenant-scoped custody of secret values, their revocation and deletion, and atomic prepared mutation batches.

  • Entities2
  • One
  • Many
  • Initial state
ENTITY · 6 FIELDSPreparedTransactionPreparedENTITY · 9 FIELDSSecretActiveRevoked

Hover or focus an entity to see its fields, lifecycle and relations. Press Enter to pin it, Escape to clear.

Lifecycles with transitions

Secret
Domain as text
Entities
EntityIdentity and fieldsLifecycleRelations
PreparedTransactiontransaction: uuid (identity) tenant: string actor: string mutations: List<Mutation> created_at: string expires_at: stringstates Prepared; initial Prepared—
Secretreference: Reference (identity) id: uuid owner_subject: string disclosure: Disclosure version: integer labels: Map<string, string> value: bytes created_at: string updated_at: stringstates Active, Revoked; initial Active revoke: Active or Revoked → Revoked replace: Active or Revoked → Active—

Source: generated by secrets-docs from spec/ (ess specify compile); do not edit

Read the custody domain in full

storage​

Named, scoped secrets stored through exactly one backend per namespace, with every command decided by an authorizer before any backend call.

ESS domain · secrets.storage

storage

Named, scoped secrets stored through exactly one backend per namespace, with every command decided by an authorizer before any backend call.

  • Entities5
  • Owns
  • References
  • One
  • Many
  • Initial state
ENTITY · 2 FIELDSBackendPresentENTITY · 3 FIELDSBindingPresentENTITY · 3 FIELDSNamespacePresentENTITY · 3 FIELDSSecretStoredENTITY · 1 FIELDTenantPresent

Hover or focus an entity to see its fields, lifecycle and relations. Press Enter to pin it, Escape to clear.

Domain as text
Entities
EntityIdentity and fieldsLifecycleRelations
Backendbackend: BackendRef (identity) capabilities: List<Capability>states Present; initial Present—
Bindingaddress: Address (identity) locator: string namespace: NamespaceKeystates Present; initial Present—
Namespacenamespace: NamespaceKey (identity) mount: Optional<BackendRef> tenant: ScopeNamestates Present; initial Presentmount references one Backend bindings owns many Binding
Secretaddress: Address (identity) version: Optional<string> namespace: NamespaceKeystates Stored; initial Storednamespace references one Namespace
Tenanttenant: ScopeName (identity)states Present; initial Presentnamespaces owns many Namespace

Source: generated by secrets-docs from spec/ (ess specify compile); do not edit

Read the storage domain in full