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

@icydotdev/runny

v0.1.5

Published

A local GUI for running npm/pnpm/yarn scripts across your project

Downloads

56

Readme


Stop memorising script names. Stop tabbing between terminals. Runny scans your project for every package.json, lays out all your scripts in a clean GUI, and lets you run, stop, and monitor them — all from your browser.

Works with npm, pnpm, and yarn workspaces. Monorepos with 50 packages or solo projects with 3 scripts — same experience.

Quick Start

npm i -g @icydotdev/runny
cd your-project
runny

That's it. Opens your browser. Every script is right there.

Or run without installing:

npx @icydotdev/runny

Features

  • Instant discovery — Automatically finds every package.json in your project, including all workspace packages
  • One-click run/stop — Play and stop buttons for each script, with proper process tree cleanup (no orphan processes)
  • Live terminal output — Real-time stdout/stderr streaming via WebSocket, rendered with full ANSI color support
  • Smart script grouping — Scripts with shared prefixes (test, test:ci, test:dev) are visually grouped together
  • Favourites — Star your most-used scripts for quick access across all packages
  • Dark & light mode — Respects your system preference, with a manual toggle
  • Auto-detects your package manager — pnpm, yarn, or npm — no configuration needed
  • Monorepo-native — Built for workspaces. Tested against real monorepos with 20+ packages
  • Expand/collapse all — Manage large package lists with one click
  • Zero config, zero dependencies on your projectnpx it and go

Screenshots

Usage

# Run in current directory
runny

# Custom port
runny --port 4000

# Don't open browser automatically
runny --no-browser

# Via npx (no install)
npx @icydotdev/runny

Supported project types

| Type | How it works | | ------------------- | ------------------------------------------------------------- | | Single package | Reads package.json scripts, shows them flat (no collapsing) | | npm workspaces | Reads workspaces field from root package.json | | yarn workspaces | Reads workspaces field from root package.json | | pnpm workspaces | Reads pnpm-workspace.yaml |

How it works

  1. Runny starts a lightweight local server (Express + WebSocket)
  2. It scans your project for package.json files based on your workspace config
  3. A React frontend opens in your browser showing all discovered scripts
  4. When you click Play, Runny spawns the script as a child process using your package manager
  5. stdout/stderr streams to the browser terminal in real time via WebSocket
  6. When you click Stop, the entire process tree is killed cleanly — no orphaned processes

Your code is never uploaded anywhere. Everything runs locally on your machine.

FAQ

No. Runny is a local-only tool. The server runs on localhost, the frontend is bundled static assets served from your machine. There are zero network requests to external services.

Runny is designed as a local development tool, not for CI. Use your package manager's built-in script runners for CI.

That's Runny's sweet spot. Start your dev servers, watch processes, and build watchers — see all their output in one place, stop them cleanly with one click.

No. Runny uses tree-kill to kill entire process trees. When you stop pnpm run dev, it kills pnpm, node, and any child processes spawned by your dev server.

Yes — Runny reads workspace configuration (pnpm-workspace.yaml or the workspaces field in package.json), not your build orchestrator. Your Turbo/Nx scripts appear like any other script and can be run from Runny.

Roadmap

  • [ ] Multi-terminal — view multiple script outputs simultaneously
  • [ ] Keyboard shortcuts (Ctrl+K search, arrow navigation, Enter to run)
  • [ ] Desktop notifications when scripts finish or error
  • [ ] "Run all" — start a common script across all packages at once
  • [ ] Detect externally-running scripts started outside Runny
  • [ ] Environment variable overrides per script

Contributing

Contributions are welcome! Please feel free to open an issue or submit a PR.

git clone https://github.com/icydotdev/runny.git
cd runny
npm install
npm run dev

This starts the Vite dev server (frontend) and the Express backend concurrently. Set TARGET_DIR to point at a project to test against:

TARGET_DIR=~/your-monorepo npm run dev

License

MIT © Sam Kavanagh