npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

whisper-secrets

v0.5.0

Published

Secure, encrypted secret management CLI for teams. Zero-knowledge .env manager with client-side AES-256-GCM encryption.

Readme

whisper-secrets

Zero-knowledge .env secret manager for teams. Encrypt, store, and share secrets — secrets are encrypted before leaving your machine. No signup, no accounts.

Install

npm install -g whisper-secrets

Features

  • Client-side encryption: AES-256-GCM encryption with PBKDF2 key derivation — your server never sees plaintext
  • Team sharing: Initialize a project, share the passphrase link, and teammates can pull secrets instantly
  • Ephemeral secrets: One-time share links with auto-expiration and optional self-destruct
  • .env workflow: Push, pull, import, rotate, and remove secrets — works with your existing .env files

Quick Start

# Initialize a project (generates passphrase + share link for your team)
ws init

# Import your existing .env or push secrets one by one
ws import
ws push STRIPE_SECRET_KEY

# Teammates:
git clone <repo> && cd <repo>
ws join <link-from-teammate>    # auto-pulls if .env.whisper is present

Tip: ws is a shortcut for whisper-secrets. Both work.

Managed Secrets (.env workflow)

ws init                          # set up a project
ws init --url https://your.host  # use your own server
ws import                        # upload existing .env
ws push SECRET_NAME              # encrypt & upload one secret
ws push                          # pick untracked .env entries interactively
ws pull                          # download & decrypt to .env
ws rotate SECRET_NAME            # update a secret in-place
ws remove SECRET_NAME            # delete a secret
ws status                        # show tracked, missing, and untracked secrets

Team Collaboration

ws invite                        # generate a new share link for a teammate
ws join <link>                   # join a project (auto-pulls if .env.whisper is present)

Ephemeral Secrets (one-time sharing)

ws share                                # 1h, self-destruct
ws share -e 24h                         # custom expiration
ws share -e 7d --no-self-destruct       # keep after first view
ws get https://whisper.example.com/...  # retrieve by URL or ID

How It Works

  1. whisper-secrets init generates a random passphrase and creates .whisperrc
  2. The passphrase derives an encryption key (PBKDF2-SHA256, 600k iterations) and an auth token
  3. push / import encrypt secrets client-side, then upload the ciphertext to the server
  4. pull downloads ciphertext and decrypts locally
  5. The server only stores encrypted blobs — zero knowledge of your secrets

Files created:

  • .whisperrc — project config (URL + passphrase). Auto-added to .gitignore by init
  • .env.whisper — mapping of secret names to server IDs. Commit this to git
  • .env — plaintext secrets, generated by pull. Add to .gitignore

Security

  • AES-256-GCM authenticated encryption with unique nonce per secret
  • PBKDF2-SHA256 key derivation (600,000 iterations)
  • Bearer token authentication derived from the same passphrase
  • No plaintext ever leaves your machine or is stored on the server

Supported Platforms

| Platform | Architecture | |----------|-------------| | Linux | x64, arm64 | | macOS | arm64 (Apple Silicon) | | Windows | x64 |

Self-hosting

Whisper is open source. You can host your own server:

# See full setup instructions
git clone https://github.com/quentinved/Whisper

Then point the CLI to your server:

whisper-secrets init --url https://your-whisper-instance.com

Telemetry

whisper-secrets sends anonymous usage events to help us understand which commands are actually used and measure real adoption (npm download counts include bots and CI, so they don't reflect real usage).

What's collected: the command name (e.g. push, pull), success/failure, CLI version, OS, and CPU architecture. A random anonymous ID is stored in ~/.whisper-secrets/telemetry_id so we can count unique users.

What's never collected: secrets, secret names, file paths, passphrases, environment variable names, or any personal data.

To opt out, set the DO_NOT_TRACK environment variable:

export DO_NOT_TRACK=1

License

MIT — github.com/quentinved/Whisper