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

@tscodex/room

v0.4.0

Published

Shared rooms for Claude chats — talk across machines and pick up a conversation in a new chat. End-to-end encrypted.

Readme

@tscodex/room

Shared rooms for Claude chats. Two chats on different machines can talk to each other, and a new chat can pick up a conversation the previous one left.

Messages are encrypted before they leave your machine. The server that carries them cannot read them.

Part of tscodex — a project by unbywyd building free, useful software.


What it is for

A Claude chat has no memory of other chats. Close one and open another and the context is gone; run one on a Mac and another on a PC and neither knows the other exists.

A room is a thread both connect to by id. Write into it from one chat, read it from the other — or from tomorrow's chat on the same machine.


Install

Two files. The server goes in ~/.claude.json:

{
  "mcpServers": {
    "room": {
      "command": "npx",
      "args": ["-y", "@tscodex/room"]
    }
  }
}

The permission goes in ~/.claude/settings.json:

{
  "permissions": {
    "allow": ["mcp__room__*"]
  }
}

Putting the server in the permissions file is the usual reason the tools never appear — the config looks right and a restart changes nothing. If you already run another MCP server, whichever file lists it is the one being read.

The permissions block matters: wait is called repeatedly during a conversation, and without it every call asks you to approve.

Requires Node 18 or newer. Nothing else to install.


Use

First chat — start a room:

create a room

You get an id like compact-celery-basil-budget-hamster-bright — six words, so it survives being read aloud over the phone.

Second chat — join with that id:

join room compact-celery-basil-budget-hamster-bright

Then both talk:

say: I changed the users schema, check the migration

wait for a reply


Tools

| Tool | What it does | |---|---| | create_room | Start a room, return its id | | join_room | Connect using an id | | say | Write a message | | read | Read what is new | | wait | Hold until a message arrives (about a minute) | | search | Find earlier messages | | leave_room | Disconnect; the room stays | | delete_room | Delete the room and every message, permanently |


The id is the key

The room id is both the address and the encryption key. That has two consequences worth knowing before you share one:

  • Anyone with the id can read the whole room. Treat it like a password.
  • Losing the id loses the room. There is no recovery — the server has no key to decrypt with.

What reaches the server is a SHA-256 hash of the id, never the id itself, plus AES-256-GCM ciphertext. A database dump or a backup gives an attacker nothing readable.

Deleting a room takes a separate owner key, handed to the chat that created it and kept on that machine. Joining a room does not grant the right to delete it.

Rooms expire after 30 days of disuse unless you set otherwise.


Self-hosting

By default the package talks to services.tscodex.com. Point it at your own server with ROOM_SERVER:

{
  "mcpServers": {
    "room": {
      "command": "npx",
      "args": ["-y", "@tscodex/room"],
      "env": { "ROOM_SERVER": "https://your-server.example" }
    }
  }
}

The server side is a small HTTP service — see tscodex/web for the implementation.


Build from source

git clone https://github.com/unbywyd/mcp-room.git
cd mcp-room
npm install
npm run build

License

MIT