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

@0x0contact/c0x0

v1.0.7

Published

P2P disposable number messenger

Readme

0x0

P2P disposable number messenger — no servers, no logs, no trace.

Share a number and a PIN. Message. Forget it ever happened.


install

npm install -g @0x0contact/c0x0

requires Node.js 18+


quick start

# initialize (generates your number)
c0x0 init

# --- share your number + PIN with someone ---
c0x0 pin new --label "for sale"   # creates e.g. "a3f9"
c0x0 whoami                       # shows your number to share

# --- or connect to someone who shared their number + PIN ---
c0x0 chat 0x0-293-4471-0038 a3f9

# done — revoke your PIN when finished
c0x0 pin revoke a3f9

commands

setup

c0x0 init          # generate your number
c0x0 whoami        # show your number
c0x0 renew         # generate a new number (resets all PINs)

PIN management

c0x0 pin new                          # create a PIN
c0x0 pin new --label "label"          # with label
c0x0 pin new --expires 24h            # expires in 24h (also: 1w)
c0x0 pin new --public                 # create a public PIN (for requests)
c0x0 pin list                         # list all PINs
c0x0 pin rotate <pin>                 # change PIN value
c0x0 pin revoke <pin>                 # permanently revoke

messaging

c0x0 chat <number> <pin>              # interactive chat
c0x0 send <number> <pin> "message"    # send once and exit
c0x0 inbox                            # view all inboxes
c0x0 read <pin>                       # read messages for a PIN
c0x0 listen                           # wait for incoming messages
c0x0 queue                            # show offline message queue

requests (public PIN)

Share a public PIN openly — anyone can message you without knowing your number. First reply creates a dedicated private channel automatically.

c0x0 pin new --public --label "open"  # create a public PIN to share
c0x0 requests                         # list incoming requests
c0x0 approve <pin> <pubkey>           # reply and convert to private chat

contacts

c0x0 contact add 0x0://NUMBER/PIN     # add from URI
c0x0 contact add NUMBER PIN           # add manually
c0x0 contact list                     # list contacts
c0x0 contact label <id> "label"       # set label
c0x0 contact remove <id>              # remove

QR code

c0x0 qr <pin>    # show QR code in terminal (scan to connect)

web UI

c0x0 web              # open browser UI at localhost:3000
c0x0 web --port 8080
c0x0 web --lan        # expose on LAN (accessible from mobile on same WiFi)
c0x0 web --no-open

Starts a local web server with a chat interface.


how it works

your number:  0x0-816-8172-8198   (generated locally, never sent anywhere)
your PIN:     a3f9                (you create and revoke it)

connection:   sha256("0x0:{number}:{pin}:0x0-v1-2026") → Hyperswarm topic
transport:    Hyperswarm (DHT-based P2P, Noise protocol)
storage:      ~/.0x0/ (local only)

No accounts. No servers. No registration. Messages route peer-to-peer via Hyperswarm.


URI scheme

0x0://0x0-816-8172-8198/a3f9

Share as a link, QR code, or copy-paste. The other person adds it as a contact and connects directly.


agent / pipe mode

For AI agents and automation:

c0x0 pipe <number> <pin>

Reads JSON commands from stdin, emits JSON events to stdout:

# stdin
{"type": "message", "content": "task complete"}

# stdout
{"type": "connected", "peer": "0x0-293-4471-0038", "pin": "a3f9"}
{"type": "message", "from": "0x0-293-4471-0038", "content": "got it"}
import subprocess, json

proc = subprocess.Popen(
    ["c0x0", "pipe", "0x0-293-4471-0038", "a3f9"],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
)
proc.stdin.write(json.dumps({"type": "message", "content": "done"}).encode() + b"\n")
proc.stdin.flush()

data

Everything lives in ~/.0x0/:

~/.0x0/
├── identity.json       # your number
├── pins.json           # your PINs
├── contacts.json       # saved contacts
├── queue.jsonl         # offline message queue (TTL: 72h)
└── messages/           # message history (per PIN)

Delete ~/.0x0/ to erase all traces.


mobile

Android app available on Google Play. iOS coming soon. The CLI and mobile apps are fully compatible — same number, same PINs, same P2P network.

0x0.contact


license

MIT