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

@polymech/runny

v0.2.0

Published

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

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 @polymech/runny
cd your-project
runny

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

Or run without installing:

npx @polymech/runny

Original project: github.com/icydotdev/runny · npm @icydotdev/runny

Features

Core

  • Instant discovery — Finds every package.json, including workspace packages
  • One-click run/stop — Process-tree cleanup with tree-kill (no orphans)
  • Live terminal — WebSocket stdout/stderr with ANSI colors (xterm.js)
  • Smart script grouping — Colon prefixes (test, test:ci, test:dev) nest visually
  • Dark & light mode — System preference + manual toggle
  • Package manager auto-detect — pnpm, yarn, or npm
  • Monorepo-native — Expand/collapse packages; works with Turbo/Nx/Lerna scripts
  • Zero project depsnpx and go; nothing is uploaded

Favourites & organisation

  • Favourite groups — Multiple named lists, reorder groups and scripts by drag-and-drop
  • Ctrl+drag to duplicate — Copy a favourite into another group (keep the source)
  • Mute in a group — Skip muted scripts when running a favourite list
  • Custom descriptions — Hover notes on favourite scripts
  • Hide scripts — Tuck away noise from the sidebar

Soft CI (sequential sessions)

  • Run a colon-group or favourite list sequentially — fail-fast by default
  • Session strip — Live step progress; stop a running session
  • CLIrunny session run … / runny session list for headless soft-CI
  • Terminal auto-follow — Active step output stays in view (toggle off via prev/next)

Terminal & search

  • Stdout / stderr filters — Toggle streams; preference persisted
  • Cycle running tasks — Prev/next in the terminal header, or Alt+← / Alt+→
  • Finished markers — Compact DONE / FAIL / SKIP + relative time on rows
  • Fuzzy search — camelCase, : - _, acronyms, and subsequences; matching trees start collapsed

Packaging

  • Single Rspack client bundle — one runny.bundle.js for publish (dist/client)
  • Local-only — Express + WebSocket on 127.0.0.1; no telemetry

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 @polymech/runny

Soft CI

# Sequential colon-group (e.g. scripts named build:*, test:*)
runny session run build --package my-app

# Favourite group by id path
runny session run favourite:<groupId>

# List recent / active sessions
runny session list

# Keep going after a failed step
runny session run test --no-fail-fast

In the UI: use the Play control on a script group or favourite group header.

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 stream 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.

Config (favourites, muted scripts, descriptions, theme, etc.) is stored under your user config directory as runny-config.json.

FAQ

This repo is a maintained fork of icydotdev/runny, published on npm as @polymech/runny. Upstream remains available as @icydotdev/runny.

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

The GUI is aimed at local development. Soft-CI sessions (runny session run …) can run sequential script groups headlessly on a machine that has your package manager installed — still not a replacement for your real CI matrix.

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. Use the terminal prev/next controls to jump between running tasks.

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

  • [x] Soft-CI sessions for groups & favourite lists
  • [x] Favourite groups, mute, Ctrl+drag duplicate
  • [x] Terminal stream filters + cycle running tasks
  • [x] Fuzzy search
  • [x] Single Rspack client bundle
  • [ ] Multi-terminal panes (side-by-side)
  • [ ] Keyboard shortcuts (Ctrl+K search, arrow navigation, Enter to run)
  • [ ] Desktop notifications when scripts finish or error
  • [ ] Detect externally-running scripts started outside Runny
  • [ ] Environment variable overrides per script

Contributing

Contributions are welcome — open an issue or PR on polymech-info/runny. For upstream discussion, see icydotdev/runny.

git clone https://github.com/polymech-info/runny.git
cd runny
npm install
npm run dev

This starts the Express API and the Rspack dev server concurrently. Set TARGET_DIR to point at a project to test against:

# Windows (PowerShell)
$env:TARGET_DIR="C:\path\to\your-monorepo"; npm run dev

# macOS / Linux
TARGET_DIR=~/your-monorepo npm run dev

Dev UI: http://127.0.0.1:5173 (proxies /api and /ws to the API on :3717).

npm run build   # dist/cli.js + dist/client/runny.bundle.js

License

MIT © Sam Kavanagh — original icydotdev/runny