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

chattier

v0.0.1

Published

Secure messaging

Downloads

4

Readme

Note

Deniable covert communications.

Like passing notes in class, but more secure.

"Dissidents in repressive regimes or victims of domestic abuse may have their phones occasionally confiscated and scanned, network traffic monitored, they may not be able to install a secure chat app at all, or may be punished for installing one, they may be identified and imprisoned if metadata or contacts show them connected or communicating with someone deemed undesirable at all. I'm not aware of any other system that the information security community recommends or even seeks to build to enable secure communication in these circumstances."

Expanded version of https://www.scriptjunkie.us/2021/09/covert-credit-calculation-communications/

Aspirational goals:

  • Passive network monitoring or active network-controlling adversaries should not be able to decrypt message contents without the sender or recipient's keys.
  • Passive network monitoring adversaries should not be able to determine whether a user is using the hidden messaging functionality on a site and active network adversaries should find that difficult.
  • Unless screen capture/keystroke recording spyware is installed, a forensic analysis of a system should not be able to determine whether it was used to participate in secret messaging once the browser is closed and browser memory is reused for another purpose.

Implementation notes

Servers facilitate peer-to-peer connections between clients over webrtc.

Changes in connections are broadcast immediately (new clients or servers joining or being disconnected).

Each node has an asymmetric keypair it announces. Chat participants additionally have a more secret keypair.

Each client sends a fixed size chunk of data at regular intervals encrypted to each system it is directly connected with.

This chunk may include instructions to forward inner wrapped encrypted messages to other nodes (which will be padded back to size for the next scheduled send).

Nodes can be instructed to act as forwards (if they receive a message for key X, wrap in encryption for key Y and forward to another node).

Setting a chain of forwards for ephemeral secret keys allows for rendezvous points to be used as destinations.

Each endpoint keep a list of server URL's, assigning each a (local) integer. Each server keep a list of connected clients, assigning each a server-specific integer. Endpoints are identified by a pair of numbers - the server int and client int. Peer links are identified by a quad - server/client for the first side and server/client for the other side.