startall
v0.0.24
Published
> A powerful, interactive terminal UI for managing multiple npm scripts with tmux-style panes, filtering, and real-time control
Readme
🚀 startall
A powerful, interactive terminal UI for managing multiple npm scripts with tmux-style panes, filtering, and real-time control

The Problem
Running multiple npm scripts during development is tedious:
- Repetitive: Manually typing
npm run frontend,npm run backend, etc. every time - Cluttered terminal: Multiple terminal tabs/windows get messy fast
- No visibility: Hard to tell if one process crashed while others are running
- No control: Can't easily restart a single service without restarting everything
- No filtering: Output from 4+ processes becomes unreadable noise
Traditional solutions fall short:
npm-run-all/concurrently: No interactivity, just dumps output- PM2: Overkill for dev workflows, designed for production
- Overmind: Amazing UX but requires tmux (not Windows-friendly)
- Manual shell scripts: No real-time status or control
The Solution
startall is a sophisticated TUI that combines the power of tmux with the simplicity of npm scripts, giving you complete control over your development processes with split panes, filtering, and interactive controls.
Features
🎯 Core Features
- Auto-discovery: Automatically reads all scripts from
package.json - Smart defaults: Remembers your last selection in
startall.json - 10-second countdown: Review selections before starting
- Parallel execution: Run multiple npm scripts simultaneously
- Live status monitoring: Real-time status indicators (● running, ✖ crashed, ○ stopped)
- Interactive controls: Start, stop, and restart individual processes on the fly
- Cross-platform: Works identically on Windows, Linux, and macOS
🎨 Advanced UI
- Multi-pane layout: tmux-inspired split panes (vertical & horizontal)
- Flexible filtering:
- Text search across all output (
/) - Filter by ANSI color (red/yellow/green/blue/cyan/magenta) (
c) - Per-process visibility toggles (
Spaceor1-9) - Per-pane filters (different views in each pane)
- Text search across all output (
- Custom pane naming: Label panes for easier identification (
n) - Column view: Instant one-pane-per-script layout with
=key (toggle back to restore your layout) - Persistent layouts: Your pane configuration is saved between sessions
- Process-specific views: Show/hide specific processes in each pane
- Colored output: Each process gets unique color-coded output
- Copy mode: Select and copy output lines to clipboard (
y) - Pause/resume: Freeze output to review logs (
p) - Scrollable history: 1000-line buffer with mouse wheel support
- Enhanced navigation: Home/End/PageUp/PageDown keys
⚙️ Display Options
- Toggleable line numbers: Show/hide line numbers (
#) - Timestamps: Show/hide timestamps for each log line (
t) - Quick process toggle: Use number keys
1-9for instant visibility control
🔧 Advanced Controls
- Quick Commands: Run any script on-demand without adding it to the persistent processes
- Press
eto open command picker and select any script - Or assign keyboard shortcuts for instant access (press assigned key to run)
- Perfect for build scripts, tests, or any short-running command
- Output shown in popup overlay with Esc to close
- Configure shortcuts in settings (
o→ Quick Commands section)
- Press
- Interactive input mode: Send commands to running processes via stdin (
i)- Perfect for dev servers that accept commands (Vite, Rust watch, etc.)
- Settings panel: Configure ignore/include patterns, shortcuts, and more (
o)- Wildcard support (
*) for pattern matching - Per-script visibility toggles
- Wildcard support (
- Git integration: Commit and push directly from the TUI (
g)- Auto-detects git repositories
- Shows branch name in the footer
- View staged, modified, and untracked files
- Stage all changes, write a commit message, and push - all without leaving the TUI
- Keyboard & mouse support: Full keyboard navigation + mouse clicking/scrolling
- VSCode integration: Optimized for VSCode integrated terminal
Installation
npm install -g startallUsage
In any project with a package.json:
startall # uses startall.json if present
startall myconfig.json # uses custom config fileThat's it! The TUI will:
- Show all available npm scripts
- Pre-select your last choices
- Give you 10 seconds to adjust
- Start all selected scripts in parallel
Keyboard Shortcuts
Selection Screen:
↑/↓- Navigate scriptsSpace- Toggle selectionEnter- Start immediately (skip countdown)o- Open settingsCtrl+C- Exit
Running Screen:
Process Control:
1-9- Quick toggle process visibility in focused paneSpace- Toggle visibility of selected processs- Stop/start selected processr- Restart selected processi- Send input to selected process (interactive mode)e- Execute any script (opens command picker)a-z- Run assigned quick command (if configured)
Pane Management:
\- Open command palette|- Split pane vertically (left/right)_- Split pane horizontally (top/bottom)=- Toggle column view (one column per script, auto-generated)x- Close current pane (if >1 pane exists)Tab- Next paneShift+Tab- Previous panen- Name current pane
Copy Mode:
y- Enter copy mode (select text to copy to clipboard)↑/↓ork/j- Move cursorHome/Endorg/G- Jump to first/last linePage Up/Page Down- Scroll by pageSpace- Start/clear selection from cursorEnterory- Copy selected lines (or current line) to clipboardEscorq- Exit copy mode
Filtering & View:
/- Enter text filter modec- Cycle color filter (red/yellow/green/blue/cyan/magenta/none)f- Filter to selected process onlyEsc- Clear filtersp- Pause/resume output scrolling#- Toggle line numberst- Toggle timestamps
Navigation:
↑/↓ork/j- Select process (vim-style)←/→orh/l- Select process (vim-style)Home- Scroll to top of paneEnd- Scroll to bottom of panePage Up- Scroll up one pagePage Down- Scroll down one pageMouse wheel- Scroll output
Other:
g- Open git modal (commit & push, only in git repos)o- Open settingsq- Quit (stops all processes)Ctrl+C- Force quit
Settings Screen:
Tab/←/→- Switch sections (Display/Ignore/Include/Quick Commands/Script List)↑/↓- Navigate itemsi- Add new ignore patternn- Add new include patternSpaceorEnter- Toggle option (Display) / Assign shortcut (Quick Commands) / Toggle ignore (Script List)dorBackspace- Delete pattern or shortcutEscorq- Return to previous screen
Run Command Picker:
↑/↓ork/j- Navigate scriptsEnter- Run selected scriptEscorq- Close picker
Quick Commands Overlay:
Esc- Close overlay and stop command (if running)
Git Modal (press g from Running Screen, only in git repos):
a- Stage all changesc- Start writing commit messagep- Push to remoter- Refresh git status↑/↓- Navigate file listEscorq- Close git modal- When writing commit message:
Enter- Stage all and commitEsc- Cancel and go back to status
Why Build This?
Existing tools either:
- Lack interactivity (concurrently, npm-run-all)
- Are production-focused (PM2, forever)
- Don't support Windows (Overmind, tmux-based tools)
- Are too heavyweight for simple dev workflows
Start is purpose-built for the development workflow: lightweight, cross-platform, and interactive.
Technical Details
- Built with OpenTUI for a modern terminal UI
- Uses standard Node.js
child_process(no PTY required = Windows support) - Parses
package.jsonscripts automatically - Saves configuration in
startall.json:{ "defaultSelection": ["frontend", "backend"], "include": ["dev:*"], "ignore": ["*:test"], "shortcuts": { "b": "build", "t": "test", "l": "lint" } }defaultSelection: scripts to auto-select on startupinclude(optional): if defined, only scripts matching these patterns are shownignore: scripts matching these patterns are hiddenshortcuts: keyboard shortcuts for running commands on-demand- All patterns support wildcards (
*)
Roadmap
- [ ] Interactive process control (start/stop/restart)
- [ ] Real-time status indicators
- [ ] Output filtering and search
- [ ] Tab view for individual process logs
- [ ] Resource monitoring
- [ ] Custom color schemes
- [ ] Configuration file support
- [ ] Watch mode (restart on file changes)
Contributing
PRs welcome! This is a tool built by developers, for developers.
License
MIT
