DEV Community

Cover image for I Got Tired of PM2. So I Built a Process Manager in Go — Single Binary, Any Language
Thomas Webb
Thomas Webb

Posted on

I Got Tired of PM2. So I Built a Process Manager in Go — Single Binary, Any Language

If you've ever set up a server running a mix of Node.js, Python, and Go services, you know the pain. PM2 is great — until you realise it requires Node.js on every machine just to manage processes that have nothing to do with Node.
That was my breaking point.

The Problem

I had a Linux server running a Python worker, and a couple of Node.js services. PM2 worked fine for the Node stuff, but managing everything through it meant dragging in a Node runtime as a hard dependency just to supervise processes that didn't need it at all.
I looked at alternatives. Supervisord is Python-dependent. systemd works but it's not exactly developer-friendly for per-project process management. Everything else was either too basic or too complex.
So I built APM.

What APM Is

APM is a production-grade process manager for Linux, written in Go and distributed as a 2.5MB static binary. No runtime. No dependencies. No config files required to get started.
Drop it on any Linux box and you're running:

curl -sL https://processmanager.dev/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

That's it.

What Makes It Different

  • Language-agnostic by design. Node.js, Python, Go, Rust, Ruby, PHP — if it runs on Linux, APM can supervise it. One tool for your entire stack.
  • Built-in reverse proxy. For most setups you can skip Nginx entirely. APM handles routing directly, keeping your infrastructure simpler.
  • Vanguard Firewall with token bucket rate limiting. Built-in rate limiting per route without bolting on a separate tool.
  • mTLS support. Mutual TLS for secure service-to-service communication, configured directly in APM.
  • Live web GUI + CLI monitor. Real-time process stats, logs, CPU and memory usage — accessible from a browser or your terminal, whichever you prefer.
  • Rolling restarts with zero downtime. APM migrates active sessions during restarts, so deployments don't drop connections.
  • Broad distro compatibility. Tested on Arch, Ubuntu, Debian, Alpine, Fedora, and Raspberry Pi.

Who It's For

APM is built for developers and DevOps teams who:

  • Run mixed-language stacks on Linux
  • Want fewer moving parts in their infrastructure
  • Are tired of maintaining Nginx configs just for basic reverse proxying
  • Need something that works the same across every distro without fiddling with dependencies

What It Looks Like

The web GUI gives you a live view of all running processes, with per-process CPU and memory graphs, log streaming, and controls to start, stop, and restart. The CLI monitor mirrors this in your terminal for SSH sessions.

Where to Get It

Website + docs: processmanager.dev
Manual: processmanager.dev/manual.html

APM is at v1.3.0 and production-ready. I'm actively developing it and genuinely interested in feedback — especially from anyone running it on unusual distros or mixed-language setups.
What's your current setup for managing Linux processes? I'd love to know what pain points you're hitting that APM might help with.

Top comments (0)