Terminal UI (TUI)
Miso includes a built-in terminal UI for running multiple scripts concurrently.
Two Modes
Tabbed Mode
A sidebar lists your workspaces/scripts with status indicators. Select one to see its full log output. Navigate with arrow keys, restart individual processes with r.
Merged Mode
All logs stream together in one view with color-coded labels per workspace. A filter bar lets you toggle which workspaces are visible.
When to Use
- Monorepo development — run
devscripts across all workspaces simultaneously - Single repo with multiple services — run your app server and a backend like Convex side by side
- Build ordering — run builds in dependency order across workspaces with
dependsOn - Turbo/Nx delegation — use miso’s TUI for development while letting Turbo or Nx handle build orchestration
Quick Start
Add "tui": "tabbed" or "merged" to your miso.json:
{
"tui": "tabbed"
}Then run any script from the project root:
miso devMiso discovers all matching scripts and launches the TUI.
Interactive Mode
Press i to hand keyboard input to the focused task. Every keystroke is forwarded to that process’s stdin — press r to reload Metro, trigger a bundler’s shortcuts, and so on. Press Ctrl+Z to leave interactive mode and return to miso’s own controls.
On Unix, each task runs in its own pseudo-terminal, so tools that gate color or interactive prompts on a TTY (dev servers, bundlers, Storybook) render exactly as they would when run directly (Windows uses pipes instead) — and long-lived dev servers such as Electron and Vite stay alive instead of shutting down on a closed stdin.
Interactive mode applies to tasks miso orchestrates directly. In delegated mode (Turbo/Nx) turbo owns the child processes, so i is unavailable there — see Turborepo Integration.
Non-interactive Environments
When no terminal is attached — CI, a piped command, docker without -t, or an agent — miso prints miso: no interactive terminal — running plain and runs the script with normal inherited stdio instead of the TUI. Nothing hangs or crashes.
Dependency Ordering
For build commands that need to run in order, configure dependsOn in the repo field:
{
"tui": "tabbed",
"repo": {
"mode": "miso",
"tasks": {
"build": {
"dependsOn": ["^build"]
}
}
}
}The ^ prefix means “before building this workspace, build everything it depends on first.” For example, if apps/web lists packages/ui as a dependency in its package.json, then ^build ensures packages/ui builds before apps/web starts. Miso walks the dependency graph automatically — you just declare the rule once.