<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thomas Webb</title>
    <description>The latest articles on DEV Community by Thomas Webb (@tominkoltd).</description>
    <link>https://dev.to/tominkoltd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3848936%2Fd20a75f3-fc8a-44c1-a904-ed9e96724eb3.jpeg</url>
      <title>DEV Community: Thomas Webb</title>
      <link>https://dev.to/tominkoltd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tominkoltd"/>
    <language>en</language>
    <item>
      <title>I Got Tired of PM2. So I Built a Process Manager in Go — Single Binary, Any Language</title>
      <dc:creator>Thomas Webb</dc:creator>
      <pubDate>Sun, 29 Mar 2026 08:44:41 +0000</pubDate>
      <link>https://dev.to/tominkoltd/i-got-tired-of-pm2-so-i-built-a-process-manager-in-go-single-binary-any-language-47ob</link>
      <guid>https://dev.to/tominkoltd/i-got-tired-of-pm2-so-i-built-a-process-manager-in-go-single-binary-any-language-47ob</guid>
      <description>&lt;p&gt;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.&lt;br&gt;
That was my breaking point.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;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.&lt;br&gt;
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.&lt;br&gt;
&lt;em&gt;So I built APM.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What APM Is
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sL&lt;/span&gt; https://processmanager.dev/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes It Different
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Who It's For
&lt;/h2&gt;

&lt;p&gt;APM is built for developers and DevOps teams who:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  What It Looks Like
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Get It
&lt;/h2&gt;

&lt;p&gt;Website + docs: &lt;a href="https://processmanager.dev/" rel="noopener noreferrer"&gt;processmanager.dev&lt;/a&gt;&lt;br&gt;
Manual: &lt;a href="https://processmanager.dev/manual.html" rel="noopener noreferrer"&gt;processmanager.dev/manual.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;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.&lt;br&gt;
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.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>devops</category>
      <category>go</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
