
pm
Docker-compose-like process manager with TUI dashboard. Runs any command, not limited to Node/Bun.
curl -fsSL appcrate.dev/pm | shRust binary. Linux x86_64. MIT License.
Features
Docker-compose style config
Define services in pm.yaml — command, environment, depends_on, working_dir, restart policy.
Interactive TUI
Navigate services, start/stop/restart individually or all at once. Keyboard-driven.
Daemon mode
pm up starts a background daemon. Services keep running after TUI exit.
Per-service logs
pm logs <service> tails output. Add -f to follow.
Restart policies
no, on-failure, or always. Exponential backoff: 1s to 32s cap.
Hot reload
pm reload picks up config changes without restarting running services.
Usage
pm # launch TUI (default)
pm up # start all services
pm up api db # start named services
pm stop # stop all
pm stop api # stop named
pm restart # restart all
pm status # print status table
pm logs api # tail logs
pm logs api -f # follow logs
pm reload # reload config
pm shutdown # shut down daemon
TUI keybindings
↑/↓ or k/j Navigate services
s / Enter Start selected
x Stop selected
r Restart selected
a Start all
z Stop all
R (shift) Reload config
q Quit TUI (services keep running)
Config example
Create pm.yaml in your project root:
services:
web:
command: python3 -m http.server 8080
environment:
PYTHONUNBUFFERED: "1"
depends_on:
- logger
restart: on-failure
logger:
command: bash -c "while true; do echo heartbeat; sleep 5; done"
All fields except command are optional. working_dir defaults to the config directory.
Tags
Changelog
2026-04-19v0.1.0Initial release — daemon, TUI, YAML config, restart policies, per-service logs