# Non-secret static registration fragments for KeyCape's bounded JWT consumers. Merge these entries into the deployment-owned KeyCape config. # The named environment variables must be materialized by an approved # out-of-repository custody path; this file never contains their values. clients: - clientId: "codex-railiance-platform" displayName: "Railiance platform coding agent" allowedScopes: ["openbao:login"] grantTypes: ["client_credentials"] clientType: "confidential" secretRef: "env:KEYCAPE_CODEX_RAILIANCE_PLATFORM_CLIENT_SECRET" serviceSubject: "service:codex:railiance-platform" tenant: "tenant:coulomb" roles: ["coding-agent"] tokenLifetime: "15m" - clientId: "secrets-engine-openbao" displayName: "secrets-engine OpenBao login" allowedScopes: ["openbao:login"] grantTypes: ["client_credentials"] clientType: "confidential" secretRef: "env:KEYCAPE_SECRETS_ENGINE_OPENBAO_CLIENT_SECRET" serviceSubject: "service:secrets-engine" tenant: "tenant:coulomb" roles: ["secrets-engine"] tokenLifetime: "15m" - clientId: "secrets-engine-approval" displayName: "secrets-engine approval consume client" audience: "approval-engine" allowedScopes: ["approval:read", "approval:consume"] grantTypes: ["client_credentials"] clientType: "confidential" secretRef: "env:KEYCAPE_SECRETS_ENGINE_APPROVAL_CLIENT_SECRET" serviceSubject: "service:secrets-engine" tenant: "tenant:coulomb" roles: ["secrets-engine"] tokenLifetime: "15m" - clientId: "approval-engine-operator" displayName: "approval-engine lifecycle operator" audience: "approval-engine" allowedScopes: ["approval:create", "approval:read", "approval:approve", "approval:revoke", "approval:supersede", "approval:observe", "approval:emit"] grantTypes: ["client_credentials"] clientType: "confidential" secretRef: "env:KEYCAPE_APPROVAL_ENGINE_OPERATOR_CLIENT_SECRET" serviceSubject: "service:approval-engine-operator" tenant: "tenant:coulomb" roles: ["approval-operator"] tokenLifetime: "15m"