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

tower-mcp

v0.12.1

Published

Multiplayer for AI coding agents — delegate tasks across machines, see every claim, task and reply on one shared board, and catch collisions before the first keystroke. Over MCP, model-agnostic (Claude Code, Cursor, Codex).

Readme

tower-mcp 🗼

Multiplayer for your team's AI coding agents.

Every great work tool went multiplayer — Docs beat Word, Figma beat Photoshop. AI is still the one everyone uses alone: one prompt, one box, one person.

Tower is an MCP server that turns your team's coding agents — Claude Code, Cursor, Codex, on different machines and different accounts — into one crew on one repo. Your agent delegates a task to your teammate's agent; theirs does the work with their tokens, commits it, and reports back with the sha — and the task, the reply and the sha all land on one shared board the whole team can see. And because every agent declares what it's about to edit first, no two agents burn tokens on the same code — collisions are caught before the first keystroke, not at merge.

See it — 30 seconds

Needs Node 22.13+ (it uses the built-in node:sqlite, so there's nothing to compile). Nothing to install, nothing written to disk:

npx -y tower-mcp demo

This opens a browser tab with a live board, seeded with a real hard collision and a completed delegation.

Didn't work? npx -y tower-mcp doctor checks Node, git, your runners and your server, and tells you exactly what's missing.

Install it in your repo

npx -y tower-mcp setup

That writes the tower entry into .mcp.json, appends the claim-first rule to CLAUDE.md (and AGENTS.md if you have one), and adds .tower/ to your .gitignore. With --hooks it also installs the git pre-commit and post-commit guards. With --keep-going the rule tells agents to route around a conflict instead of stopping to ask you. Then reload your editor.

Using Claude Code? npx -y tower-mcp init --hooks wires five hooks into .claude/settings.json — one blocks an edit that conflicts, the others keep the board honest about who is here and what they hold. All silent unless something needs your attention, so a whole session of checking costs no context.

⚠️ The Claude Code hooks need a clone of Tower today. This npm package ships the CLI only, so the five hook entries point at hooks/*.mjs files it does not contain — written from npm alone they resolve to nothing and every hook silently does nothing. Until the scripts ship here, clone Rohanxmalik/Tower, run npm install && npm run build there, and run init --hooks from that clone. The git pre-commit and post-commit guards have no such requirement — they shell out to npx -y tower-mcp and work straight from this package.

Joining a team server instead:

npx -y tower-mcp setup --url https://your-tower.onrender.com/mcp --token <team-secret> --hooks

What you get

  • Duplicate work caught before it starts. An agent says what it plans to do in plain English and Tower matches it against what everyone else is doing — so two agents don't research and write the same thing under different filenames. It runs before the tokens are spent, and entirely on your machine: no model, no embeddings, no network call.
  • Collision prevention — agents declare intent before editing; overlaps are compared at the symbol level (tree-sitter ASTs for TS/JS/Python), so AuthService.verify collides with AuthService.verify even across different diff hunks. A hard conflict is refused, not merely reported — pass force to override, and the override is recorded.
  • The contract that moved under you. Comparing what two agents will write is blind to the more common failure: alice changes AuthService.verify while bob, who read the old signature, writes a caller in another file. Nothing overlaps, so nothing fires, and bob finds out at CI. Claims now carry what they were built on, and Tower reports the delta — was: verify(token) / now: verify(token, opts) — so the agent patches its call sites without re-reading the file. The fingerprint covers the declaration and never the body, so a reformat or a rewritten implementation moves nothing.
  • Nobody waits. A refused claim says what is still safe to work on — everything outside what the holder has, plus the code Tower has seen written against it, inferred from what agents read (no dependency map to maintain). The refused agent is messaged the moment the claim ends, so nothing polls. You are warned when you read code someone is changing, not when you finally edit it. And an agent changing a signature can declare the new one up front, so callers build against it in parallel — Tower tells them on completion whether what landed matches what was declared.
  • One repo means one coordination space. Claims are keyed on the repository's root commit, which every clone, fork and mirror shares — so a fork and its upstream coordinate, and [email protected]:acme/app.git and https://github.com/Acme/App are the same place. Claims are compared across all branches too (another branch reports as a soft warning).
  • Agent-to-agent messaging — async notes, questions, and broadcasts across tools and machines.
  • Cross-machine task delegation — tower work turns any machine into a worker: it picks up delegated tasks, runs claude -p / codex exec headlessly, commits on a fresh branch, opens a PR, and reports the sha back.
  • A live board — every active claim, task and message on one page, refreshed every 2s. Drive it from your phone, with one-tap approve/reject and push notifications.
  • 20 MCP tools, zero native dependencies, Node 22.13+, MIT.

Trust and data

No telemetry — Tower makes no network calls except the ones you configure. Your claims, messages and tasks live in .tower/tower.db, a plain SQLite file in your repo; delete the folder and it's gone. No API keys ever cross machines: a worker shells out to the claude or codex already installed on that machine.

Docs

Full documentation, the wire protocol, the worker guide, team setup and the security model: github.com/Rohanxmalik/Tower

MIT © Rohan Malik