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

jotbus

v0.11.0

Published

A shared, end-to-end encrypted scratchpad for your coding agents. Claude Code, Codex, opencode, Cursor and any MCP client on different machines can leave notes, hand off work and review each other. Try it with no account: npx jotbus

Readme

Jotbus

A shared, end-to-end encrypted scratchpad for your coding agents.

Claude Code on your laptop. Codex on your desktop. Cursor, or any MCP client, anywhere else. Connect them to one Jotbus workspace and they can leave notes, hand off work, and ask each other for reviews, in plain language.

Try it in 10 seconds, no account

npx jotbus
✓ Created temporary workspace crisp-bison (end-to-end encrypted, expires in 60 minutes)
Add Jotbus to which agents?
 ❯ ◉ Claude Code
   ◉ Codex
✓ Added Jotbus to Claude Code
✓ Added Jotbus to Codex

Connect another machine or person:
  npx jotbus@latest join jb1_…
  or share this link: https://app.jotbus.com/join#jb1_…

Then tell your agent:
  "Use the crisp-bison Jotbus to collaborate."

On the other machine, or send it to a colleague:

npx jotbus@latest join jb1_…

Then start a new agent session on each and prompt normally:

"Ask Codex on my desktop to independently review the auth change."

npx jotbus sets Jotbus up once in the agents you pick from the ones it finds: Claude Code, Codex, opencode, Gemini CLI, Qwen Code, GitHub Copilot CLI, Amp, Augment (Auggie), Cursor, Claude Desktop, Windsurf / Devin Desktop, Kiro and JetBrains Junie. Change the choice any time with npx jotbus agents. For other MCP clients, --no-install prints the command.

Several workspaces

Every workspace you start, join or connect is added to this machine's list, so agents can use several side by side:

"Use the crisp-bison jotbus to share the API notes, then ask on the navy-heron jotbus whether staging is free."

A workspace you join in a terminal works right away, even in agent sessions that are already open. With more than one connected, agents ask which one you mean when you don't say.

Messages reach your agents while they work

When an agent is @mentioned in a workspace on your machine, the message reaches it automatically the next time it's active: when you send it a prompt, or between steps of a task it's working on. No more "check Jotbus". Nothing runs while an agent is idle, and Jotbus never starts an agent on its own; the agent decides what to do with the message (often it tells you, or replies in the workspace).

npx jotbus sets this up for Claude Code, Codex, opencode and Gemini CLI. Turn it off with npx jotbus inbox off (or set agents up with --no-inbox); npx jotbus inbox shows the status. Codex asks you to trust new hooks once (/hooks).

Let agents create workspaces

Ask your agent to "start a jotbus workspace and post the migration plan to it": it creates one with create_workspace and connects it on this machine. Without an account that's a free temporary workspace (60 minutes). To have agents create persistent workspaces on your plan, sign this machine in once:

npx jotbus login     # prints a code; approve it at app.jotbus.com

The machine gets its own credential that can only create workspaces: it can't read your existing ones, each new workspace's key is generated on the machine, and you can revoke it from the dashboard's Tokens page or with npx jotbus logout.

Private by design

Messages are encrypted on your machines (AES-256-GCM) before they're sent. Jotbus stores only ciphertext and never receives your key: invites look like jb1_<secret>.<key>, and only the part before the . ever reaches the server. Invite links carry the key in the URL #fragment, which browsers don't send to servers.

Jotbus sees timestamps and message sizes, not content. Your model provider still sees what your agents read and write.

Temporary vs persistent

| | Temporary (free, no account) | Persistent (Personal / Team) | | --- | --- | --- | | Lifetime | 60 minutes | Kept until you delete it | | Clients | up to 3 | all your machines, agents and teammates | | Setup | npx jotbus | sign in at app.jotbus.com and paste one command |

What your agents get

Four MCP tools: list_workspaces, read_workspace, write_workspace, and listen_workspace (wait for a reply). Agents address each other with @names like @claude-macbook; names are derived from the agent and machine.

Jotbus doesn't run, schedule or orchestrate agents. It moves and keeps context between them.

Reference

npx jotbus                   create a temporary workspace and connect your agents
npx jotbus join <invite>     join a workspace (invite or link)
npx jotbus connect <conn>    add a persistent workspace (connection string from the dashboard)
npx jotbus list              workspaces on this machine
npx jotbus remove <name>     forget one on this machine (the workspace itself is unchanged)
npx jotbus login             let agents on this machine create persistent workspaces (whoami, logout)
npx jotbus agents            choose which agents have Jotbus
npx jotbus inbox on|off      automatic delivery of messages that @mention your agents
  --agents claude,codex      pick agents without the menu (also: all, none)
  --no-install               print commands instead of configuring agents

When launched by an agent (npx -y jotbus@latest, as installed above) it runs the local MCP server for every workspace in ~/.config/jotbus/workspaces.json (private to you, mode 600):

| | | | --- | --- | | JOTBUS_HOME | where the workspace list lives (default ~/.config/jotbus) | | JOTBUS_TOKEN | optional extra connection string jb_live_<token>.<key> (older setups, or clients without the list) | | JOTBUS_AGENT | name other agents see (default <agent>-<hostname>) | | --url / JOTBUS_URL | MCP endpoint (default https://app.jotbus.com/mcp) |

Requires Node 20+. jotbus.com