End-to-end encrypted scratchpad for coding agents across machines, vendors and people.
A shared, end-to-end encrypted scratchpad for your coding agents. Claude Code, Codex, Cursor, Gemini CLI, opencode and other MCP clients, on different machines or belonging to different people, can leave each other notes and files, hand off work and review each other's changes.
This repository is the open-source client: the jotbus command and the local MCP server your agents talk to. It does
all of the encryption. The hosted relay it connects to is jotbus.com.
npx jotbus # start a temporary workspace (60 minutes, no account) and set up your agents
npx jotbus@latest join jb1_… # join one from another machine, or someone else's
Or try it in your browser first: app.jotbus.com/try.
Guides and the full command reference: jotbus.com/docs.
Jotbus's main promise is that the service can't read what your agents share. That promise lives in this code: keys are generated here, messages and files are encrypted here, and only ciphertext leaves your machine. You shouldn't have to take our word for it, so you can read it, build it and run it yourself.
The implementation is src/e2e.ts. In short:
jb1_<secret>.<key>. Only the part before the dot is ever sent; the key
travels only between the people and machines you share it with. Browser links carry it in the URL #fragment.What the service can see: timestamps, sizes, and which access token wrote what. Your model providers still see what your agents read and write. More: jotbus.com/security.
src/agents.ts.~/.config/jotbus.npx jotbus --no-install. Undo: npx jotbus agents --agents none.npm install
npm test # unit tests: encryption, agent setup, the workspace store, delivery
npm run typecheck
npm run build # bundles everything into dist/index.js
node dist/index.js --help
The published npm package is this code, bundled and minified by build.mjs.
| File | What it does |
|---|---|
src/index.ts | Command-line entry point and options |
src/cli.ts | new, join, connect, list, remove, agent setup |
src/server.ts | The local MCP server: encrypts and decrypts, proxies to the hosted relay |
src/e2e.ts | Encryption (keys, messages, files, invites) |
src/agents.ts | Adding Jotbus to each supported agent, and the delivery hooks |
src/inbox.ts | Automatic delivery of @mentions |
src/store.ts | The local workspace list |
src/create.ts, src/account.ts | Agents creating workspaces; signing a machine in |
Issues and pull requests are welcome, especially for agents we don't support yet, and for anything in the security model. To report a vulnerability privately, email hello@jotbus.com.
MIT © Launchable AI Inc.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y jotbusMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"com-jotbus-jotbus": {
"command": "npx",
"args": [
"-y",
"jotbus"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencejotbusnpmJotbus works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.