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

rowrow

v0.3.89

Published

Run a crew of coding agents in parallel and steer them from any browser, including your phone.

Readme

Quick start

Needs Node.js 24+, git, and an agent CLI you're signed in to (claude, codex, cursor-agent, grok, kimi, opencode, pi, or Antigravity's agy_acp_server.par).

npx rowrow@latest serve        # http://127.0.0.1:7373; open the sign-in link it prints

To keep it running, install it as a service (launchd or systemd; same flags as serve):

npm install -g rowrow
rowrow service install         # again after switching Node versions

A second machine

Agents on a dev box, a Mac mini or a cloud VM, steered from your laptop and phone. On that machine:

npx rowrow up

It runs rowrow there as a service that only your own networks reach (your LAN and Tailscale, never the internet), and prints its addresses, a pairing code (ABCD-EFGH, once, for 10 minutes) and a QR code. Then, on the device you steer from: rowrow for Mac → Add a machine, pick it, type the code; or open one of the addresses in a browser and type the code; or scan the QR code with your phone. rowrow up again for a new code. With Tailscale on both, the connection is encrypted and works from anywhere; on a LAN alone it's plain HTTP, which that network can read.

What it is

herdr-style workspaces (a long-lived server owns your agents, and every screen answers who needs me now?), but with a rich web UI instead of a TUI and tmux keys. On a phone, use the web app from the home screen or the native iOS app.

It's local first: your phone connects straight to your machine, over your LAN or Tailscale. There is no relay, account or cloud, so it works where remote-control apps that go through a vendor's server are not allowed.

On your phone

rowrow up (above) and scan its code, or Settings → Sign in another device on a signed-in browser. For push notifications on iPhone (Add to Home Screen), the web app needs HTTPS: with Tailscale,

tailscale serve --bg 7373
rowrow service install --public-url https://<machine>.<tailnet>.ts.net

Every request needs a device credential, and anyone signed in can run commands on this machine: guard your pairing links.

The iOS app

A native app for what you do on a phone: an inbox sorted by who needs you (swipe to reply or mark seen), conversations that open at the latest answer with the agent's work folded behind it, notifications you can reply to from the lock screen, a dictation-first composer, and reviewing changes line by line. Build it from ios/ with Xcode, or let CI send it to TestFlight (docs/ios.md), then scan the same pairing code. Notifications need your own APNs key (rowrow push apns …); Apple sees only that an agent finished, never what it said.

On your Mac

rowrow for Mac (Apple silicon, from the releases) is a window onto the machines your agents run on, and the manager of rowrow on them. Add a machine: this Mac (it installs rowrow and hands it to launchd, like rowrow service install), one over SSH (it puts rowrow there and keeps it running, the way VS Code's Remote-SSH does), or one on your network or tailnet (run npx rowrow up there, pick it from the list, type its code). The sidebar's top row switches between them. Agents keep working when the app is closed; it stays in the menu bar with notifications you can reply to, and keeps itself and rowrow on its machines up to date, waiting for agents to finish their turn before rowrow restarts there (docs/desktop.md).

CLI

Everything the UI does, so agents can drive agents too. rowrow help for the rest.

rowrow agents                                      # who needs you first
rowrow agent new ~/code/app "Fix the flaky test" --runtime codex --wait
rowrow agent send <agent> "also update the changelog" --wait
rowrow notify "Deploy failed" "api-7 is crash-looping" --key deploy-7   # from inside an agent: tell you

Status

Early: no compatibility promises before 1.0. Agents run with permission prompts off (D-022), so give them repositories you'd give a colleague, ideally in worktrees.

More

Apache-2.0