Secretgenerator
Auditable CSPRNG-backed credential generator for AI agents and machine-readable pipelines. Stable JSON schema, NIST entropy floors, SLSA 3 + cosign signed releases. CLI, Go/Python/Rust libs, MCP server.
Ask AI about Secretgenerator
Powered by Claude Β· Grounded in docs
I know everything about Secretgenerator. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
secretgenerator
Auditable random credential generator for AI agents and machine-readable pipelines. Replaces ad-hoc password generation with a verifiable contract backed by the OS CSPRNG.
TL;DR
# zero-install (no clone, no compile)
npx -y @secretgenerator/cli password --json --show-crack-time
# permanent install
brew install rafaelperoco/tap/secretgenerator
# Model Context Protocol server (Claude / Cursor / Cline)
npx -y @secretgenerator/mcp
Output is stable JSON (schema v1):
{
"schema_version": 1,
"password": "VoJgEDVnCoTVMx8cLnMwmHnz",
"entropy_bits": 142.9,
"charset_id": "alphanum-v1",
"algorithm": "crypto/rand+rejection-sampling",
"subcommand": "password",
"version": "2.0.0",
"request_id": "f4c54f9c-0f57-4d58-83be-7937cbe077f7",
"timestamp_utc": "2026-04-29T22:35:11.077695Z",
"crack_time_estimates": [
{
"profile_id": "nation-state-v1",
"human_readable": "1.2e+10 times the age of the universe"
}
]
}
Pin the schema with --require-schema-version=1.
Why not let an LLM generate the password directly? Recent research (Irregular Security, 2025) shows Claude, GPT, and Gemini produce passwords with ~20 bits of effective entropy instead of the ~100 bits the same models claim. Specific 16-character sequences recurred 18 times out of 50 attempts. LLMs cannot sample uniformly. secretgenerator is the correct primitive: an LLM tool-calls it instead of inventing the credential itself.
Subcommands
| Subcommand | Use case |
|---|---|
password | Random password from a named charset (default 20 chars, ~119 bits). |
passphrase | Diceware passphrase from the EFF Large Wordlist (default 8 words, ~103 bits). |
secret | Raw bytes from the OS CSPRNG, encoded as URL-safe base64 (default 32 bytes / 256 bits). |
api-key | Token in prefix_random form (Stripe-style). |
pin | Numeric PIN with weak-PIN blocklist enforced. |
entropy | Estimate the entropy and crack time of an existing password. |
secretgenerator password --json --show-crack-time
secretgenerator passphrase --words 10 --separator -
secretgenerator secret --bytes 32
secretgenerator api-key --prefix sk_live --length 40
secretgenerator pin --digits 6 --acknowledge-low-entropy
echo -n 'Tr0ub4dor&3' | secretgenerator entropy --show-crack-time
Full flag reference: docs/SUBCOMMANDS.md.
Install
| Method | Command |
|---|---|
| npm (zero-install) | npx -y @secretgenerator/cli |
| Homebrew | brew install rafaelperoco/tap/secretgenerator |
| MCP server | npx -y @secretgenerator/mcp |
| Container | docker run --rm ghcr.io/rafaelperoco/secretgenerator:v2.0.0 |
| Go install | go install github.com/rafaelperoco/secretgenerator/cmd/secretgenerator@v2.0.0 |
| GitHub Actions | uses: rafaelperoco/secretgenerator/.github/actions/setup-secretgenerator@v2.0.0 |
| Python (PyPI) | pip install secretgenerator-py (CLI binary installed separately) |
| Rust (crates.io) | cargo add secretgenerator (CLI binary installed separately) |
| Verified manual | See verified install below. |
Verified install
Every release is signed end-to-end. Verify before extracting:
# 1. Download the artifacts.
curl -LO https://github.com/rafaelperoco/secretgenerator/releases/download/v2.0.0/secretgenerator_2.0.0_linux_amd64.tar.gz
curl -LO https://github.com/rafaelperoco/secretgenerator/releases/download/v2.0.0/checksums.txt
curl -LO https://github.com/rafaelperoco/secretgenerator/releases/download/v2.0.0/checksums.txt.sig
curl -LO https://github.com/rafaelperoco/secretgenerator/releases/download/v2.0.0/checksums.txt.pem
# 2. Verify the cosign signature (Sigstore/Fulcio + GitHub OIDC).
cosign verify-blob \
--certificate checksums.txt.pem \
--signature checksums.txt.sig \
--certificate-identity-regexp "https://github.com/rafaelperoco/secretgenerator/.github/workflows/release.yml@refs/tags/v.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
checksums.txt
# 3. Verify the binary checksum.
sha256sum -c checksums.txt --ignore-missing
# 4. Extract and install.
tar -xzf secretgenerator_2.0.0_linux_amd64.tar.gz
sudo mv secretgenerator /usr/local/bin/
The container image is also signed:
cosign verify ghcr.io/rafaelperoco/secretgenerator:v2.0.0 \
--certificate-identity-regexp "https://github.com/rafaelperoco/secretgenerator/.github/workflows/release.yml@refs/tags/v.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com"
Full procedure including SLSA provenance verification: docs/AUDIT.md.
Features
- Stable JSON contract (schema v1) with
--json. Versioned, schema-pinnable, JSON-Schema-validated. - Hard entropy floors aligned with NIST SP 800-63B-4 and NIST SP 800-131A Rev. 3.
- Class-requirement guarantees via rejection sampling.
- Auditable provenance: SLSA Level 3, cosign keyless signatures, CycloneDX SBOMs.
- Audit log with SHA-256 password fingerprints (never plaintext).
- Time-to-break estimates under five named attacker profiles.
Go library
import "github.com/rafaelperoco/secretgenerator/pkg/secretgen"
res, err := secretgen.Password(secretgen.PasswordOptions{
Length: 24,
CharsetID: "alphanum-symbols-v1",
RequiredClasses: "lower,upper,digit,symbol",
})
if err != nil { /* errors.Is(err, secretgen.ErrBelowEntropyFloor) etc. */ }
fmt.Println(res.Password, "entropy:", res.EntropyBits)
for _, e := range secretgen.EstimateCrackTime(res.EntropyBits) {
fmt.Println(e.ProfileID, e.HumanReadable)
}
API stability is documented in pkg/secretgen/doc.go.
Examples in 6 languages
Ready-to-run snippets for Python, Node.js, Ruby, Rust, Bash, and Go live
under examples/. All of them produce the same
schema-v1 output and pin --require-schema-version=1.
Documentation
- docs/SUBCOMMANDS.md β Every flag of every subcommand.
- docs/SCHEMA.md β Output schema reference.
- docs/CRYPTO.md β Entropy source per OS, NIST/OWASP mapping.
- docs/AUDIT.md β End-to-end release verification.
- SECURITY.md β Threat model, vulnerability reporting.
- CHANGELOG.md β Release history.
- CONTRIBUTING.md β Development setup, required CI gates.
License
MIT. The embedded EFF Large Wordlist is CC-BY-3.0; see
internal/words/eff_large_wordlist.txt and the EFF announcement at
https://www.eff.org/dice.
Author
Rafael Peroco
