Runway gives you a dedicated sidebar for all the scripts in your project. Add package.json files, directories, or individual script files and run them with a single click — no more digging through package.json or memorising long commands.
Click any script to run it in a named terminal. Double-click a running script to stop it. Single-click a running script to bring its terminal into focus.
Active scripts are highlighted so you always know what's running:
- Amber label — the script name is tinted while the process is active
▶badge — a persistent git-style badge appears to the right of the label- Stop button — the inline play button swaps to a stop button on hover; click to send Ctrl+C
Runway uses VS Code's shell integration to detect when a process exits naturally, crashes, or is stopped via Ctrl+C in the terminal — not just when the terminal window is closed.
Add any package.json and Runway automatically:
- Uses the project's
namefield as the group heading - Shows the real npm, pnpm, yarn, or bun logo next to the group
- Detects the package manager from lock files, the
packageManagerfield, or script command patterns - Runs scripts with the correct command (
pnpm run dev,bun run build, etc.)
Well-known script names get distinct icons so you can find what you need at a glance:
| Icon | Script names |
|---|---|
| ⚡ | dev, start, serve, server |
| 📦 | build, compile, bundle |
| 🧪 | test, spec, e2e |
| 💅 | lint, eslint, format, prettier |
| 🔍 | typecheck, tsc, types |
| 🧹 | clean, reset |
| 🚀 | deploy, release, publish |
| 👀 | watch, preview |
| 🗄️ | db, migrate, seed |
| ✨ | generate, gen, scaffold |
| 📚 | docs, storybook |
| 📥 | install, setup, bootstrap |
Add a directory and Runway finds and categorises scripts by type:
| Category | Extensions | Runner |
|---|---|---|
| Shell Scripts | .sh .bash .zsh |
bash |
| Python Scripts | .py |
python3 |
| JavaScript Scripts | .js .mjs .cjs |
node |
| TypeScript Scripts | .ts |
npx tsx |
| Swift Scripts | .swift |
swift |
| Go Scripts | .go |
go run |
| Ruby Scripts | .rb |
ruby |
| PHP Scripts | .php |
php |
| Perl Scripts | .pl |
perl |
| PowerShell Scripts | .ps1 |
pwsh |
| Makefile | Makefile |
make |
Right-click any script → Set Command Override to permanently replace the command. Add flags, env vars, or change the binary entirely. The original command is always shown in the tooltip.
Right-click → Set Display Name to give any script a friendly label (e.g. rename build:prod to Production Build). The original name stays visible as secondary text.
Right-click any script → Open in [Terminal App] to run it in your preferred native terminal. Configure the app under Settings → runway.systemTerminalApp — supports Terminal, Warp, iTerm, and iTerm2.
Scripts update automatically when package.json files change or new files are added to watched directories — no manual refresh needed.
Runway starts empty. You add exactly what you want — no surprise scripts from deep inside node_modules.
- Open the Runway panel from the activity bar
- Click + and choose:
- Add package.json — pick one or more
package.jsonfiles - Add Directory — scan a folder for all supported script types
- Add Script File — add a single script file
- Add package.json — pick one or more
- Click any script to run it
| Action | How |
|---|---|
| Run a script | Click the row, or right-click → Run Script |
| Stop a running script | Click the ⏹ stop button (hover), or double-click the script |
| Focus a running terminal | Single-click a running script |
| Open in system terminal | Right-click → Open in [App] |
| Open source file | Right-click → Open Source File |
| Override the command | Right-click → Set Command Override... |
| Clear an override | Right-click → Clear Override |
| Set a display name | Right-click → Set Display Name... |
| Remove a source | Right-click a group header → Remove |
| Remove multiple sources | Click + → Remove Sources... |
| Refresh the list | Click the refresh button in the panel header |
| Setting | Default | Description |
|---|---|---|
runway.systemTerminalApp |
Terminal |
macOS terminal app to use for Open in System Terminal (Terminal, Warp, iTerm, iTerm2) |
- Monorepos: add each sub-package's
package.jsonseparately — each gets its own named group - Override + display name together: set a custom command and a friendly label to fully control how a script appears and runs
- External scripts: add script files from outside your workspace — they show their full path so you always know where they live
- All overrides and display names are saved per-workspace and persist across reloads
The relevant runtime must be available in your PATH:
- Python scripts require
python3 - TypeScript scripts require
npx tsx(or installtsxglobally) - Swift scripts require the Swift toolchain
- Go scripts require the Go toolchain
- PowerShell scripts require
pwsh
MIT