> A powerful, interactive terminal UI for managing multiple npm scripts with tmux-style panes, filtering, and real-time control
npm install startall> A powerful, interactive terminal UI for managing multiple npm scripts with tmux-style panes, filtering, and real-time control
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
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.
package.jsonstartall.json/)c)Space or 1-9)n)= key (toggle back to restore your layout)y)p)#)t)1-9 for instant visibility controle to open command picker and select any scripto → Quick Commands section)i)o)*) for pattern matchingg)``bash`
npm install -g startall
In any project with a package.json:
`bash`
startall # uses startall.json if present
startall myconfig.json # uses custom config file
That's it! The TUI will:
1. Show all available npm scripts
2. Pre-select your last choices
3. Give you 10 seconds to adjust
4. Start all selected scripts in parallel
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)↑
- /↓ or k/j - Move cursorHome
- /End or g/G - Jump to first/last linePage Up
- /Page Down - Scroll by pageSpace
- - Start/clear selection from cursorEnter
- or y - Copy selected lines (or current line) to clipboardEsc
- or q - 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:
- ↑/↓ or k/j - Select process (vim-style)←
- /→ or h/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 patternSpace
- or Enter - Toggle option (Display) / Assign shortcut (Quick Commands) / Toggle ignore (Script List)d
- or Backspace - Delete pattern or shortcutEsc
- or q - Return to previous screen
Run Command Picker:
- ↑/↓ or k/j - Navigate scriptsEnter
- - Run selected scriptEsc
- or q - 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 listEsc
- or q - Close git modalEnter
- When writing commit message:
- - Stage all and commitEsc
- - Cancel and go back to status
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.
- Built with OpenTUI for a modern terminal UI
- Uses standard Node.js child_process (no PTY required = Windows support)package.json
- Parses scripts automaticallystartall.json
- Saves configuration in :`
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 (
- [ ] 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)
PRs welcome! This is a tool built by developers, for developers.
MIT