Skip to content

icydotdev/runny

Repository files navigation

Runny

Runny

A visual dashboard for all your npm scripts. Zero config.

npm version npm downloads license

Quick Start · Features · Screenshots · Usage · Contributing


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.

Runny dashboard

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

Dark mode

Dark mode

Light mode

Light mode

Script grouping

Script grouping

Favourites

Favourites

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

Does this upload my code / phone home?

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.

Can I use this in CI?

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

What about long-running scripts like `dev`?

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.

Will stopping a script leave zombie processes?

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.

Does it work with Turborepo / Nx / Lerna?

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

About

Runny is an npm package that provides a GUI for running npm scripts

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors