peekachu
v0.1.0-alpha.1
Published
Password manager for AIs — store secrets in OS keychain, inject into child processes, scrub output
Maintainers
Readme
peekachu
Password manager for AIs. Store secrets in your OS keychain, inject them into child processes, and scrub output so AI coding assistants never see the actual values.
AI agents like Claude Code, Cursor, and Devin can see everything in your terminal. Peekachu keeps secrets out of their context by replacing real values with [REDACTED:NAME] in all process output.
npx peekachu run --env DB_PASSWORD -- node server.js AI Agent peekachu Child Process
(sees nothing) (has secrets)
| | |
|--- run --env ... ---->| |
| |-- fetch from keychain |
| |-- inject env vars --->|
| | |--- runs
| |<-- stdout/stderr -----|
|<-- scrubbed output ---| |
| | |
[REDACTED:NAME] replaces secrets real valuesQuick Start
# Store a secret (opens native OS dialog)
npx peekachu set DB_PASSWORD
# Run a command with the secret injected and output scrubbed
npx peekachu run --env DB_PASSWORD -- node server.js
# The AI sees: connection string: postgres://user:[REDACTED:DB_PASSWORD]@localhost/db
# The child process sees the real value in its environmentCommands
peekachu set <name>
Store a secret in the OS keychain. On macOS, opens a native dialog with a hidden input field. Falls back to reading from /dev/tty (not stdin, which the AI may control).
peekachu set API_KEY
peekachu set DB_PASSWORDpeekachu run --env <name> -- <command>
Run a command with secrets injected as environment variables. All stdout and stderr output is scrubbed — any occurrence of a secret value is replaced with [REDACTED:NAME].
# Single secret
peekachu run --env DB_PASSWORD -- node server.js
# Multiple secrets
peekachu run --env DB_PASSWORD --env API_KEY -- node server.jspeekachu run --ci --env <name> -- <command>
CI mode. Instead of reading from the OS keychain, reads secrets from existing environment variables (as set by your CI runner). Output is still scrubbed.
# In CI/CD pipeline where secrets are already in env
peekachu run --ci --env DB_PASSWORD --env API_KEY -- npm testpeekachu list
List the names of stored secrets. Never shows values.
peekachu list
# DB_PASSWORD
# API_KEYpeekachu delete <name>
Remove a secret from the keychain.
peekachu delete API_KEYpeekachu status
Show platform, provider, and runtime info.
peekachu status
# Platform: macos
# Provider: macOS Keychain (security CLI)
# Node: v22.0.0How It Works
Secrets are stored in the OS keychain — macOS Keychain (
securityCLI) or Linux Secret Service (secret-toolCLI). No config files, no.envfiles, no plaintext on disk.Secrets are injected as environment variables into the child process. The child reads them normally via
process.env.Output is scrubbed in real-time using a Transform stream with a sliding window buffer. Secrets split across chunk boundaries are still caught.
Signal forwarding — SIGINT, SIGTERM, and SIGHUP are forwarded to the child process. Exit codes are preserved.
Platform Support
| Platform | Keychain Provider | Secret Input |
|----------|------------------|--------------|
| macOS | Keychain Access (security CLI) | Native dialog (osascript) |
| Linux | GNOME Keyring / libsecret (secret-tool CLI) | /dev/tty |
Requirements
- Node.js 18+
- macOS or Linux
- No native addons — works with
npxout of the box
Built With
This project was built with Claude Code.
License
MIT
