個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Self-hosted, open-source ephemeral password delivery for IT teams. Zero-knowledge architecture (key in URL fragment), single-use email links with TTL, configurable generation policies. Written in Go.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗An ANSSI-compliant password — memorable, in two clicks.
Self-hosted password distributor for enterprises. The browser generates, the server gates. No password ever crosses the wire.
Website · Documentation · Security · Contributing · Hall of thanks
SealKeeper is a self-hosted password distributor for enterprises. It helps your employees choose passwords that are at once compliant with ANSSI recommendations (levels B1, B2, B3) and easy to remember.
A user opens the public page, enters their work email, receives a single-use link, and is presented with several password proposals — generated entirely inside their browser via the WebCrypto API. They pick the one they find easiest to remember. The password never crosses the server. SealKeeper has nothing to leak.
Every IT department faces the same dilemma:
— Either users pick passwords they can remember, which usually fail an ANSSI audit (birth years, child names, keyboard sequences). — Or they pick something strong, write it on a sticky note, and effectively negate the strength.
SealKeeper closes this gap with three calibrated generators (citations, word assembly, pure random), one per ANSSI level, mapped to the sensitivity of the user's account.
/metrics.The fastest way to try SealKeeper is in evaluation mode, which captures emails locally instead of sending them and uses SQLite for storage:
docker run --rm -p 8443:8443 \
-e SK_MODE=eval \
-e SK_BASE_URL="https://localhost:8443" \
ghcr.io/sched75-org/sealkeeper:latest
The first run prints a bootstrap password to the container logs. Then:
https://localhost:8443/admin and sign in.example.com).https://localhost:8443/ and request a password as a user (any address matching your allowlist)./admin/captured-mail — click the link, see proposals generated in your browser.Evaluation mode is not for production. See the deployment guide for production setup (real SMTP, PostgreSQL, TLS termination, log shipping).
sequenceDiagram
autonumber
actor User as 👤 User · Browser
participant Server as 🛡️ SealKeeper · Gatekeeper
User->>Server: POST /api/request (work email)
activate Server
Note right of Server: Allowlist check<br/>Determine ANSSI level (B1/B2/B3)<br/>Anti-enumeration: response always identical
Server-->>User: Single-use link via email
deactivate Server
Note left of User: User clicks the email link
User->>Server: GET /api/policy (session token)
activate Server
Server-->>User: Policy descriptor (generator + params)
deactivate Server
Note left of User: 🔐 In-browser WebCrypto generation<br/>N password proposals computed locally<br/>Password never crosses the wire
Note right of Server: ✋ No password seen<br/>No symmetric key<br/>Signed audit log only
Note left of User: User picks one proposal<br/>Clipboard auto-purged after 30s<br/>Page closes when session expires
Detailed flow on the website's How it works section.
Administration is done entirely through the embedded admin console at /admin. Key configuration surfaces:
| Section | Configures |
|---|---|
| Allowlist domains | Which email domains are accepted on the public page |
| Policies per domain | Up to three policies per domain, one per ANSSI level |
| Elevation lists B2 / B3 | Email addresses entitled to higher-level passwords |
| Editorial libraries | Word dictionaries and quotation corpora, by language |
| SMTP relay | Server, port, authentication, TLS mode |
| Branding | Logo, accent colour, email subject and signature |
| Audit & SIEM | Syslog / webhook / Splunk / Sentinel / Elastic |
| TOTP / WebAuthn | Admin console second factor |
Configuration changes are versioned and exported as JSON for review or replication across environments.
SealKeeper is a security product. We treat reports the way we would wish ours to be treated: promptly, in writing, without legal threat. See SECURITY.md for the responsible disclosure process, PGP fingerprint, and what to include in a report.
PGP fingerprint: 1E11 670E 11A0 4C0D 808F B94D CCC4 93CB A701 6D6E
Verifiable on keys.openpgp.org and on the site at /.well-known/pgp-key.asc.
Past acknowledgements (currently none — pre-release) are maintained at the Hall of thanks.
Detailed roadmap on the changelog page.
SealKeeper is engineered to align with:
Contributions are welcome. See CONTRIBUTING.md for the development setup, coding style (Go: gofmt, go vet, golangci-lint), commit conventions, and pull request process. The project follows the Contributor Covenant 2.1 code of conduct.
If you find a security issue, please do not open a public issue. Follow the procedure in SECURITY.md.
SealKeeper is licensed under the GNU Affero General Public License v3.0 (LICENSE). Any deployment of SealKeeper, including network-accessible deployments, must offer its source code to users under the same licence.
Copyright © 2026 Pascal-Louis Darmon — pgp 1E11 670E 11A0 4C0D 808F B94D CCC4 93CB A701 6D6E