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

zypher-chat

v3.0.1

Published

Zypher E2EE CLI client

Readme

🚀 Zypher

Zypher is a modern, CLI-first, end-to-end encrypted chat system featuring a lightweight Node.js server and a powerful terminal client.


✨ Features

  • End-to-end encryption for DMs & groups (X25519 + AES-256-GCM, Ed25519 signatures)
  • Forward secrecy with per-message ephemeral ratchet keys
  • Offline messaging with automatic delivery on reconnect
  • Secure group invites with encrypted per-member key bundles
  • Presence checks & online status
  • Ghost mode for instant local data wipe

🗂️ Project Structure

| Folder | Description | |-------------|--------------------------------------------------| | client/ | CLI app providing the zypher command | | server/ | Express + Socket.IO server with SQLite storage |


⚡ Requirements

  • Node.js (with node:sqlite support)
  • npm
  • Git (for zypher server quickstart)

🚦 Quick Start

  1. Install the CLI globally:
    npm i -g zypher-chat
  2. Start a local server daemon:
    zypher server quickstart
  3. Add/connect to a server:
    zypher new
  4. Start chatting:
    zypher <alias> [user]
    Example:
    zypher local alice

Already have a server? Skip quickstart and just run zypher new.


🛠️ Development (From Source)

  1. Install server dependencies:
    cd server
    npm install
  2. Create a .env file in server/:
    PORT=3000
    MASTER_PASSWORD=change-me
    JWT_SECRET=change-me-too
    RATE_LIMIT=100
    MAX_BODY_SIZE=1mb
    Only MASTER_PASSWORD is required; others are optional.
  3. Start the server:
    node index.js
  4. Install client dependencies:
    cd ../client
    npm install
  5. Run the CLI from client/:
    node index.js help
    node index.js new
    node index.js local alice

🖥️ CLI Commands

| Command | Description | |--------------------------------|-----------------------------------------------| | zypher server quickstart | Clone, configure, and launch local server | | zypher server stop | Stop the local daemon | | zypher server status | Show daemon status | | zypher new | Add a server and register/login | | zypher <server> [user] | Open E2EE chat on a saved server | | zypher settings | Manage servers, accounts, and ghost mode | | zypher help | Show help |


💬 Chat Commands

DMs

  • /chat <name> — Switch to a DM
  • /chat @group — Switch to a group
  • /who — Show current recipient
  • /status — Online status for current recipient
  • /keys — Show key fingerprint
  • /groups — List your groups
  • /inbox — Read unread messages
  • /ghost — Wipe local data and exit
  • /quit — Exit

Groups

  • /chat <name> — Switch to a DM
  • /chat @group — Switch to another group
  • /members — List members with online status
  • /status — Show group online count
  • /invite <user> — Invite a user to the group
  • /inbox — View unread messages from all chats
  • /leave — Leave the current group
  • /rename <new-name> — Rename the group (if permitted)
  • /kick <user> — Remove a user (if permitted)
  • /promote <user> — Grant admin rights (if permitted)
  • /demote <user> — Revoke admin rights (if permitted)
  • /ghost — Instantly wipe all local data and exit
  • /quit — Exit the chat client

⚙️ Configuration & Data

  • Client config: ~/.zypher/config.json
  • Quickstart server config: ~/.zypher/server-config.json
  • Server data: server/zypher.db (or next to config if ZYPHER_CONFIG is set)

📝 Notes

  • The server requires MASTER_PASSWORD (or a config file with masterPassword) to start.
  • Security: This project has not been formally security audited. Review the code before relying on it for high-stakes use. (tho i think it's pretty solid)

License

Zypher is licensed under the MIT License. See LICENSE for details.

Disclaimer

Zypher hasn't been formally security audited. Review the code before using it for anything high-stakes. The crypto is standard and the implementation is small enough to read in an afternoon.

Zypher is free and open-source. If you find a bug or want to contribute, check out the GitHub repo!

Zypher was made for people valuing privacy and simplicity not for illegal purposes. Don't be a jerk.

Feel free to fork it and modify it for your needs, but please don't use it to do bad things. I'm not responsible for how you use it.