Running local dev processes: from terminal tabs to a process manager
A local dev stack is several long-running processes: a web server, an API, a queue worker, often a database. Something has to start them, keep their output, decide what happens when one crashes, and give each a port. Terminal tabs cover two servers. A Procfile runner or concurrently covers a repeatable set, Docker Compose covers services that already run as containers, and a process manager adds restarts, logs that outlive a terminal, and health checks. Pick the lightest option that fixes the problem you actually have.
Four problems every approach has to solve
Judge any setup by four questions. Where does each server’s output go, and can you read it after the terminal closes? What happens when one process crashes? What happens when two want the same port? Can a teammate, or you next Monday, start the whole set without remembering the order? Run multiple dev servers locally answers them for terminal tabs, tmux, concurrently, Procfile runners, Docker Compose, and Rig in one comparison table.
The pieces
- A process manager starts programs, tracks them, captures their output, and decides what happens when they exit. A task runner finishes when its command does, and a viewer such as top does not own the processes it lists.
- A Procfile lists one process per line as a name, a colon, and a command. Heroku defines the format and other runners read it, so each tool decides for itself what it accepts. The Procfile guide covers syntax and runners, and the Procfile validator checks a file line by line.
- A sidecar process is a helper that runs beside the main app, such as a queue worker. Nothing ties it to the web server except whoever starts both.
- A health check is a small, repeatable request that says whether a service is alive and able to work. Listening on a port is not the same as being healthy.
- A reverse proxy accepts requests on behalf of a backend. Locally, it often puts HTTPS in front of a plain HTTP dev server.
Reading order
- Read the comparison guide to choose an approach.
- If you choose a Procfile, read the Procfile guide, then check your file with the Procfile validator.
- Add health checks once the start order matters, and read the sidecar process entry if you run workers.
- Ports are the usual next problem, so continue with ports and conflicts.
How Rig fits
Rig is a process manager for local dev servers. It detects package.json scripts, a Procfile, and a Compose file in a project and offers each as a script to start. It keeps one log per project, polls health over HTTP, and, when a project has auto-restart switched on, restarts a crashed process with backoff. Procfile projects, Health-aware start order, and the Mac process manager page describe it.
Limits
A Procfile only says what to run: it installs nothing and builds nothing, and runners differ on what happens when one process exits, so kill a worker once and watch. Compose runs your code in a container, so live editing needs a bind mount or Compose Watch. Rig’s health check is an HTTP request, so a worker with no URL reads as unknown, and a 404 counts as healthy.
Tools in this topic
Guides in this topic
- Guide
Procfile guide: syntax, process types, and running it locally
Learn the Procfile format, what web, worker, and release mean, a worked file for web, worker, and scheduler, and how Foreman, Honcho, Overmind, and Rig run it.
- Guide
Run multiple dev servers locally: which approach fits
Compare terminal tabs, tmux, concurrently, Procfile runners, Docker Compose, and Rig for running a web app, API, and worker together, with a trade-off table.
Glossary terms in this topic
- Glossary
Process manager
A process manager starts programs, tracks them, captures their output, and decides what happens when they exit: restart, stay stopped, or report the failure.
- Glossary
Procfile
A Procfile is a text file named Procfile that declares an app’s process types, one per line, as a type name, a colon, and the command that runs it.
- Glossary
Sidecar process
A sidecar is a helper that runs beside a main application and supports it. In Kubernetes it is a container in the same Pod.
- Glossary
Health check
A health check is a small, repeatable request that reports whether a service is alive and able to do its job.
- Glossary
Reverse proxy
A reverse proxy is a server that accepts requests on behalf of one or more backend servers, forwards them, and returns the responses.
Knowledge base articles in this topic
- Docs
Procfile projects
Classic multi-process apps without package.json scripts.
- Docs
Health-aware start order
Why Rig boots dependencies before your app.
- Docs
Processes table
See every process Rig is managing for a project.
- Docs
Artisan sidecars
Queue, Horizon, schedule, Reverb as Rig processes.
- Docs
Local HTTPS (.localhost)
Trusted local HTTPS for projects that need it.
Blog posts in this topic
- Blog
Procfile plus sidecars on one board
A Procfile starts the main cast. Rig also keeps Vite, queue workers, and managed databases in the same ordered group.
- Blog
Morning boot without six tabs
The same stack every day should not be a ritual. Rig starts the group in order, health-checks it, and leaves Terminal for the one-off commands.
- Blog
What is a local process control plane?
Rig is a Mac app that discovers, starts, stops, and watches every process in your local project from one window, with logs, ports, and MCP. Not a hosted IDE.
- Blog
Health checks that are not just curl
A green board means the process stayed up and answered. A curl in a sticky note means you remembered to run it.
- Blog
Local HTTPS without the cert dance
Managed local services can get HTTPS without you becoming a part-time PKI operator.
Comparisons in this topic
Pages in this topic
Related topics
Frequently asked questions
How do I run a frontend and an API together?
Use two terminal tabs, or one concurrently script if you want a single command. Add structure when you start missing crashes, hitting port clashes, or forgetting the start order. The comparison guide sets out the options against four problems: output, crashes, ports, and repeatability.
Does a Procfile need a web process?
Only if the app serves HTTP traffic on Heroku. There, web is the only process type that receives traffic from the platform’s routers, and its command must bind to the port in the PORT variable. Locally, nothing routes traffic by process type, so any process can serve HTTP.
When is a process manager worth installing?
When the manual approach has a visible cost: you restart the same servers daily, ports collide, or a crash goes unnoticed. Until then, a script or a Procfile is enough.
What is the difference between a liveness check and a readiness check?
Liveness asks whether a process is still working, or stuck so badly that restarting it is the right move. Readiness asks whether it can take traffic right now. A server can be alive while it warms a cache or waits for a database. On a laptop the check is usually one HTTP request with a short timeout.
See how Rig fits in
Rig is a Mac app that starts, stops, and watches the processes in a project from one window. The knowledge base explains each part in plain language.
Related
Section links
- Procfile validator
- Procfile guide: syntax, process types, and running it locally
- Run multiple dev servers locally: which approach fits
- Process manager: definition and meaning
- Procfile: definition and meaning
- Sidecar process: definition and meaning
- Health check: definition and meaning
- Reverse proxy: definition and meaning
- Procfile projects
- Health-aware start order
- Processes table
- Artisan sidecars
- Local HTTPS (.localhost)
- Procfile plus sidecars on one board
- Morning boot without six tabs
- What is a local process control plane?
- Health checks that are not just curl
- Local HTTPS without the cert dance
- Rig vs terminal tabs
- Mac process manager for local development
- Ports and conflicts in local development
- Project groups
- npm, pnpm, and bun
- Monorepos in Rig
- Restart vs stop
- Morning boot checklist
- What running means on the board
- Groups vs presets — which one you want
- One log pane beats two laptops
- Sticky notes are not a control plane
- Full stack local development on Mac and Windows
- Dev setup for solo developers on Mac and Windows