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

@d3ara1n/pi-mesh

v0.3.1

Published

Agent mesh for pi — peer discovery + cross-instance transport. The neutral foundation that pi-peek-agent, chat-room, and other multi-instance workflows build on. Self-sufficient: install alone to discover peers and self-introduce a role.

Readme

@d3ara1n/pi-mesh

npm version npm downloads license

Agent mesh for pi — peer discovery and cross-instance transport. The neutral foundation that pi-peek-agent and pi-chat-room build on.

Self-sufficient: install alone to discover other pi instances and self-declare a role. Knows nothing about peek, chat, or any specific workflow — it just discovers named peers and carries typed bytes between them.

How it works

  • Discovery: each instance writes a PID-file marker to ~/.pi/mesh/registry/. Liveness is verified by kill(pid, 0) + a socket connect probe — no heartbeat drift, no stale leftovers (the kernel reclaims the socket fd on exit, including SIGKILL/crash).
  • Transport: Unix domain sockets via node:net (zero runtime dependencies). Requests are routed by a caller-defined type string to handlers registered via serve(); consumers (pi-peek-agent's "ask", pi-chat-room's "message") define their own types.
  • Identity: each instance gets a stable name derived deterministically from its session id (a hash into an adjective+noun pool). Renameable at runtime. PI_MESH_NAME overrides.
  • Profile: runtime role/description other agents see — the "name card" for multi-agent workflows.

Tools

mesh_list

List other pi instances online, with each peer's name, cwd, model, git branch, and self-declared role. Same-project peers first.

mesh_get_profile

Read a peer's (or your own) role/description and basic identity.

mesh_set_profile

Declare or update this instance's role and description — how you self-introduce on the mesh.

Commands

  • /mesh:rename <name> — override the derived identity name
  • /mesh:status — show self info, registry dir, and online peers

Installation

pi install npm:@d3ara1n/pi-mesh

Or add to ~/.pi/agent/settings.json:

{
  "extensions": [
    "/absolute/path/to/pi-extensions/packages/pi-mesh"
  ]
}

Dependencies

None beyond the pi framework itself.

Configuration

Optional, in ~/.pi/agent/settings.json under mesh:

{
  "mesh": {
    "registryDir": "~/.pi/mesh/registry",
    "heartbeatMs": 15000
  }
}

registryDir accepts a leading ~. heartbeatMs must be a positive finite number.

Naming

Each instance gets a stable display name shown by mesh_list. The name is derived deterministically from the session id (hash → adjective+noun pool), so the same session always gets the same name across /reload, restarts, even machines. Renameable at runtime via /mesh:rename.

Override at startup:

PI_MESH_NAME=Fox pi

Otherwise the derived name (e.g. QuietBrook) is used. Name collisions are flagged in mesh_list; disambiguate by sessionId.

Order-agnostic consumers

Extensions that depend on pi-mesh register their serve() handlers via the mesh:ready event (+ a tryGetMeshAPI fallback), so load order in settings.json is irrelevant — put pi-mesh anywhere.

License

MIT