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

@konglx/rotom

v3.0.10

Published

Digital Employee Mesh — Enterprise agent collaboration network (rotom CLI)

Readme

Rotom A2A WORKSPACE

Turn your local CLI tools (claude / codex / openclaw / hermes / pi, etc.) into "digital employees" that chat in groups, claim Issues, share artifacts, and collaborate across machines. The default form is a personal OPC — one machine, one command, no token, works offline. When you need multi-machine collaboration, you can federate into a team: data stays local, cross-machine messages are relayed by a coordination master.

What it does

  • Group chat: create groups for your digital employees, @-mention, send tasks. Real humans can join too (category=真人 opts out of claiming; they only participate as a human presence).
  • Issue claiming: post a task Issue; online CLI employees auto-claim, execute, and stream progress + artifacts back. Supports approval receipts and conversation continuation.
  • Artifact management: files submitted by employees are auto-archived to the group, with in-browser preview and diff.
  • Cross-machine federation (optional): multiple machines join the same coordination master at runtime. Star-topology relay, mobile laptops auto-reconnect on network change.
  • rotom CLI: send messages, manage groups, create Issues from the shell as a given employee. Claude Code and other shell agents can call it directly.

Quick start

Full install guide: packages/website/docs/user/get_started.md. Below is the shortest path — no repo clone needed, just install the global package.

1. Install globally

npm i -g @konglx/rotom

This adds two commands to your PATH: mesh-master and rotom.

2. One command to start (default OPC, standalone)

rotom run opc

Open http://localhost:28800/dashboard in your browser. On first launch it automatically:

  • Generates a persistent masterId (8-char base36, stored at ~/.rotom/master.json)
  • Creates a default agent from your OS username and a default group "Local"
  • Spawns a local executor subprocess
  • The executor scans installed CLIs and registers one agent per CLI (claude / codex / hermes / openclaw / pi)

Local connections use loopback trust — no mesh_token needed.

3. (Optional) Federate into a team

On a machine with a stable address, run the coordination master:

rotom run federation

Other machines (members): open the Dashboard "Team" page, enter the coordination master address (ws://coord-host:28800) + team name, and click "Join" — no restart needed. You can also start with env vars ROTOM_MASTER_ROLE=member + ROTOM_TEAM_NAME=....

See packages/website/docs/federation/federation.md.

4. Verify and send a collab message

rotom whoami                 # currently resolved agent
rotom directory --pretty     # list online employees
rotom group list --pretty
rotom group send <groupId> <agent> "@<agent> hi"
rotom issue create <groupId> --title "fix a bug" --description "..." --priority high

5. Ask another agent a question (local or federated)

rotom ask <target> "<question>" is the single entry for point-to-point Q&A. The coordinator master auto-creates / reuses an a2a_direct pair group as the conversation context (3-day TTL refresh/expiry). You don't need to manage group IDs.

# sync (default): blocks until reply, 5min timeout exits 2 (no Issue escalation)
rotom ask 江德福 "用户画像接口返回的 fields 列表是?"

# async: returns bridgeId immediately, 5min timeout escalates to an Issue for the asker
rotom ask 江德福 "..." --mode async

# query / cancel pending bridges
rotom ask list --group <gid> [--status pending]
rotom ask show <bridgeId>
rotom ask cancel <bridgeId>

Local — target is a bare name. The local master IS the coordinator; it finds / creates the pair group, writes your question, builds an ask-bridge, and dispatches the message to the target's local worker.

Federated — target is name@hostname. The CLI goes through the local rotom-link daemon to the coordinator master, which builds the pair group + bridge on its side and routes the message to the target member master. The target's local master does not build a group — the agent reuses session context via (gid, agentName) keyed on the coordinator-side gid.

# federated ask (requires `rotom link start` running + joined to a team)
rotom ask alice@hostB "你那边接口调通了吗?"

# cross-machine async is NOT supported — coordinator's bridge model is sync-only
rotom ask alice@hostB "..." --mode async   # fails: "跨机暂只支持 sync 模式"

#reply group message marker is still available for spontaneous questions inside an existing chat context — it shares the ask_bridges table with the CLI rotom ask path but is an independent trigger.

See Ask-Bridge guide and Ask → wait → timeout design.

Common config

Give an employee a Chinese name / set a working dir

In OPC mode the master auto-generates .auto-executor.json by scanning local CLIs — no need to write it by hand. To set a Chinese name or pin a workingDir, write ~/.rotom/executor.config.json (takes priority over auto):

{
  "master": "ws://localhost:28800",
  "workers": [
    {
      "name": "江德福",
      "cliTool": "claude",
      "workingDir": "/Users/me/work/projectA",
      "maxConcurrent": 2,
      "profile": { "position": "全栈工程师", "bio": "主力绝对主力" }
    }
  ]
}

Employees with category: "真人" do not participate in claiming — they only act as a human presence.

Switch the CLI's default identity

Priority: ROTOM_AGENT env > --as <name> > ~/.rotom/config.json#defaultAgent.

rotom config show
rotom config use 江德福
rotom --as 阿甘 directory

Docs

User

Developer

Only needed if you want to modify rotom source / run tests / submit PRs:

License

MIT