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

@tinoy/pi-ipc

v0.1.1

Published

Talk to other pi sessions on this machine: list peers, send, ask and wait, or broadcast.

Readme

[!WARNING] Do not install anything here yet.

This is a fast-moving prototype: the interfaces change without notice, and nothing here is stable. Every package in this project is headed for a stable 1.0, but that is still some way off. Install one only if you intend to follow the code and expect breakage.

@tinoy/pi-ipc

Talk to other pi sessions on this machine: list the peers, send to one, ask one and wait for its answer, or broadcast to all of them.

pi install npm:@tinoy/pi-ipc

What it needs at call time

A writable $XDG_RUNTIME_DIR, which a login session provides. The transport lives under $XDG_RUNTIME_DIR/pi-ipc and is refused by name when that directory is unset, is not a directory, or belongs to another user — it never falls back to a second location. There is no broker, no socket, no config file and no command line: the transport is reachable only from an extension running inside a session, and a session's id and name come from the session itself.

Registers

ipc

| Action | What it does | | --- | --- | | list | the live sessions, each with a short id, name and cwd | | send | one message to one peer, arriving in it as a turn of its own | | ask | send, then block until the peer answers or the ask times out | | broadcast | the same message to every other live session |

A peer is addressed by its full session id, a unique id prefix of 4 or more characters, or its exact name; a target that could be more than one session is refused with the candidates. An inbound ask prints the handle that answers it — only an ask carries one, so a message or broadcast is never answered with answerTo — and a handle that matches no waiting ask delivers its text as an ordinary message rather than dropping it. An ask left unanswered is named in one line at the end of the turn — there is no pending action to poll. PI_IPC_ASK_TIMEOUT_MS sets the ask timeout (default 600000 ms).

Works better with

| Neighbour | You gain | You lose without it | Install | | --- | --- | --- | --- | | @tinoy/pi-canon | a canon edit reaches every running session as a passive notice, with no new session needed | running sessions keep the rules they started with until they are restarted | pi install npm:@tinoy/pi-canon | | @tinoy/pi-focus-gate | a focus toggle reaches every peer as a passive notice at its next turn | each session still reads the state file, so gating is unaffected and only the notice is lost | pi install npm:@tinoy/pi-focus-gate |

The bus is the same contract either way: a package that registers a namespace still serves it with this package installed or with any other implementation of the transport.

Dependencies

pi-supplied imports (@earendil-works/pi-coding-agent, typebox) are peer dependencies with a * range and are never bundled. Plain dependencies: @tinoy/pi-ext-lib, whose ipc.ts owns the wire — the rendezvous path, the presence records, the inbox and the bus contract strings.

Licence

MIT — see the repository LICENSE.