__ _ ___ _ __ | |_ _ _
/ _` |/ _ \ _____| '_ \| __| | | |
| (_| | (_) |_____| |_) | |_| |_| |
\__, |\___/ | .__/ \__|\__, |
|___/ |_| |___/
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, like binding.irb, byebug, breakpoint, etc.
Press ctrl+] to attach to a process and get a full interactive terminal session — type commands, inspect variables, step through code. Press ctrl+] again to detach and return to the combined output view.
go-pty # reads ./Procfile
go-pty -f FILE # reads a specific Procfile
go-pty -s web,worker # run only specific processes
go-pty -e .env # load environment variables from file_: bin/rails assets:precompile
_db: bin/rails db:migrate
web: bundle exec rails server -p 3000
worker: bundle exec sidekiq
css: tailwindcss --watch
Entries whose name starts with _ are treated as preflight commands.
- They run sequentially in alphabetical order.
- Every preflight command must exit with code
0. - If any preflight fails, go-pty exits and services are not started.
- Preflights always run, even when using
-sto select services. - Preflights are rerun on
ctrl+rrestarts.
Keep preflights short-lived. They are intended for setup checks and one-off preparation,
not long-running watchers or interactive commands. During a ctrl+r restart, go-pty
waits for preflights to finish before services are started again.
FOO=bar
BASE=/app
LOG=${BASE}/logs
Variables are expanded in order. Use ${VAR} syntax to reference previously defined variables or existing environment variables.
| Mode | Key | Action |
|---|---|---|
| Normal | Enter |
Insert a blank line as a visual separator |
| Normal | ctrl+] |
Open process selection dialog |
| Normal | ctrl+c |
Shut down all processes and exit |
| Dialog | Up/Down |
Navigate process list |
| Dialog | Enter |
Attach to selected process |
| Dialog | Esc |
Cancel |
| Attached | ctrl+] |
Detach and return to normal mode |
In normal mode, output from all processes is shown with colored prefixes. In attached mode, you get a raw terminal session with the selected process — full readline support, colors, and interactivity.
make build
make testMIT