__ _  ___        _ __ | |_ _   _
 / _` |/ _ \ _____| '_ \| __| | | |
| (_| | (_) |_____| |_) | |_| |_| |
 \__, |\___/      | .__/ \__|\__, |
 |___/            |_|        |___/

A process manager that runs commands from a Procfile, each in its own pseudoterminal (PTY). Every process gets a real terminal, so you can attach to any running process and use interactive debuggers and REPLs directly.

Press ctrl+] to attach to a process for a full interactive terminal session. Press it again to detach and return to the combined output view.

GitHub Download

Demo

Quick start

# Install (macOS)
brew tap lcmen/extra
brew install go-pty

# Install (Linux)
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
URL=https://github.com/lcmen/go-pty/releases/latest/download
curl -fsSL $URL/go-pty-linux-$ARCH -o ~/.local/bin/go-pty
chmod +x ~/.local/bin/go-pty

# Run
go-pty -f Procfile

# Run subset of processes
go-pty -f Procfile -s web,worker

# Load env vars from .env file
go-pty -f Procfile -e .env

Procfile example

# Procfile
_: bin/rails assets:precompile
_db: bin/rails db:migrate
web: bin/rails server
worker: bundle exec sidekiq

Entries prefixed with _ (called preflights) run before services start in alphabetical order. They stop the whole launch on failure, always run with -s filters, and run again on restart.

Keep preflights short-lived. They are meant for setup checks and one-off preparation, not long-running watchers or interactive commands.

Keyboard shortcuts

Mode Key Action
Normal mode
Enter Insert visual separator
ctrl+] Open process selection
ctrl+c Shut down and exit
ctrl+r Rerun preflights and restart all processes
Dialog mode
Up/Down Navigate list
Enter Attach to process
Esc Cancel
Attached mode
ctrl+] Detach