Introduction
Process Compose brings Docker Compose semantics to bare-metal processes. It lets you define, order, and monitor multiple local services in a single YAML file with dependency graphs, health checks, and restart policies. A built-in TUI or web UI shows real-time status, logs, and controls — without requiring containers.
What Process Compose Does
- Manages multiple local processes defined in a
process-compose.yamlfile - Supports dependency ordering with health check conditions before starting dependents
- Provides readiness and liveness probes (exec, HTTP, or TCP)
- Includes a terminal UI dashboard showing status, logs, and restart controls per process
- Offers a REST API and optional web UI for remote monitoring
Architecture Overview
Process Compose is a single Go binary that parses the YAML config, builds a dependency DAG, and starts processes in topological order. Each process runs as a child with captured stdout/stderr streams. A health-check scheduler polls readiness probes and updates the dependency state machine. The TUI layer renders a process list with live status indicators and scrollable log output. An embedded HTTP server optionally exposes a REST API and web dashboard.
Self-Hosting & Configuration
- Install via Homebrew, Go install, Nix, or download a prebuilt binary
- Define services in
process-compose.yamlat the project root - Configure per-process environment variables, working directories, and restart policies
- Use readiness probes to gate dependent processes until backends are ready
- Enable the web UI with
--port 8080for browser-based monitoring
Key Features
- Docker Compose-style YAML for defining local multi-service development environments
- Dependency graph with health check gating ensures correct startup ordering
- Built-in TUI with per-process log streaming, restart, and stop controls
- REST API and web UI for remote monitoring of long-running process sets
- Namespace support for running subsets of processes from the same config file
Comparison with Similar Tools
- Docker Compose — Container-focused; Process Compose manages bare processes
- mprocs — Simpler multi-process TUI, no dependency ordering or health checks
- Foreman / Overmind — Procfile-based with interleaved output, no dependency graph
- Tilt — Kubernetes-centric development tool with live update, heavier setup
- just + background jobs — Manual scripting approach, no monitoring or health checks
FAQ
Q: How does this differ from Docker Compose? A: Process Compose manages native OS processes, not containers. No Docker daemon is required. It is ideal when containerizing every service adds unnecessary overhead.
Q: Can I define dependencies between processes?
A: Yes. Use depends_on with condition: process_healthy or process_completed_successfully to order startup based on health probe results.
Q: Does it support auto-restart on crash?
A: Yes. Set restart: on_failure or restart: always per process to enable automatic restarts with configurable backoff.
Q: Can I run only a subset of services?
A: Yes. Use process-compose up frontend backend to start named processes, or define namespaces to group related services.