Overview
Implement WebAuthn-based approval and unlock for client-server mode as specified in docs/encrypted-storage-spec.md (Section 6). This eliminates the server startup password ceremony by using passkeys/biometrics for human approval verification.
Depends on: Phase 2 (Client-Server Mode) — server API + signed grants
Goals
- WebAuthn enrollment: Register passkeys/biometrics for server operators
- WebAuthn assertion for approval: Approve grant requests via biometric verification instead of Discord reactions
- Approval web UI: Minimal web page served by the 2kc server for approve/deny actions
- Notification links: Discord/channel notifications include clickable approval URLs
- Policy enforcement: Server can require WebAuthn-verified approval for grant issuance
- No server startup password: WebAuthn replaces the password-on-startup ceremony for the approval/unlock gate
Key Design Decisions
- Library:
@simplewebauthn/server + @simplewebauthn/browser for FIDO2/WebAuthn
- Web origin: Server hosts a minimal web UI at its existing HTTP endpoint (e.g.,
https://server.example/approve)
- Credential storage: WebAuthn credentials stored in server config or a dedicated credentials file
- Backward compatibility: Hard-coded password auth (Phase 2) remains available as fallback
- Scope: WebAuthn is server-side only — local mode remains password-based (spec constraint)
Out of Scope
- WebAuthn for local-only mode (explicitly excluded by spec)
- Mobile-native biometric SDKs (web-only via browser)
- Multi-tenant / multi-user credential management
Spec Reference
docs/encrypted-storage-spec.md — Section 6 (Variant C: WebAuthn Unlock)
Overview
Implement WebAuthn-based approval and unlock for client-server mode as specified in
docs/encrypted-storage-spec.md(Section 6). This eliminates the server startup password ceremony by using passkeys/biometrics for human approval verification.Depends on: Phase 2 (Client-Server Mode) — server API + signed grants
Goals
Key Design Decisions
@simplewebauthn/server+@simplewebauthn/browserfor FIDO2/WebAuthnhttps://server.example/approve)Out of Scope
Spec Reference
docs/encrypted-storage-spec.md— Section 6 (Variant C: WebAuthn Unlock)