Advanced Process Manager
for Linux

Supervise any process in any language — Node.js, Python, Go, Rust, Ruby, PHP, or anything else that runs on Linux. Proxy HTTP/WS/TCP/UDP, rate-limit, and monitor everything from a single static binary.

Linux  ·  Any language  ·  Zero config to start

terminal
$ apm run node server.js \ -instances 4 -watch "*.js" \ -server http://0.0.0.0:3000 Starting daemon Worker node started (4 instances) $ apm list NAME INST STATUS CPU MEM UPTIME node 4/4 running 1.2% 48MB 2m 14s $ apm gui GUI started at http://127.0.0.1:6789

One binary, full stack

No config files required to get started. Everything you need is built in.

Process Supervision
Start, stop, restart, and run multiple parallel instances. Automatic crash recovery with configurable restart delays and limits.
Reverse Proxy
Built-in HTTP, WebSocket, and TCP proxy. Round-robin load balancing across instances. Session migration on rolling restarts.
Vanguard Firewall
IP allowlists/blocklists, path banning, and per-IP rate limiting with token bucket. Auto-ban with configurable TTL. CDN IP lists included.
File Watcher
Monitor source files with regex patterns and auto-restart workers on change. Per-worker ignore patterns and debounce delay.
Live GUI
Web dashboard at localhost:6789 with real-time CPU, memory, connection stats, and per-instance LED event indicators.
StatsD Metrics coming soon
Export worker metrics over UDP to Datadog, InfluxDB, Graphite, or any StatsD-compatible receiver. Per-worker configuration.
Built-in TLS
First-class TLS for all server types — HTTP, WebSocket, TCP. Bring your own certs. Mutual TLS (mTLS) support with CA verification.
Rolling Restarts
Restart instances one at a time with zero downtime. Configurable delay between instance cycles. Session state preserved across restarts.

Any language. Any runtime. One manager.

APM doesn't care what stack you use. If it compiles, interprets, or just runs on Linux — APM can start it, supervise it, proxy it, and restart it when it crashes. No plugins. No adapters. No wrapper scripts.

Node.js Python Go Rust Ruby PHP Java Elixir C / C++ Bash Deno Bun + anything else

If your app runs on Linux and talks to stdout — APM has you covered.

Up and running in seconds

1 — Install

One line. Detects your arch, downloads the right binary, asks for sudo only when it needs to copy itself to /usr/sbin/apm.

$ curl -fsSL https://processmanager.dev/install.sh | bash
wget alternative
$ wget -qO- https://processmanager.dev/install.sh | bash

Prefer to inspect first? Download manually →

2 — Start a process

# Simple start
$ apm run node server.js

# With proxy + multi-instance
$ apm run node server.js \
    -instances 4 \
    -server http://0.0.0.0:3000

3 — Config file

# /etc/apm/apm.conf
worker {
    name       myapp;
    exec       node;
    params     server.js;
    instances  4;
    restart    true;
    watch      *.js;
    server     http://0.0.0.0:3000;
}

4 — Load & manage

$ apm load /etc/apm/apm.conf
$ apm list
$ apm restart myapp
$ apm reload /etc/apm/apm.conf
$ apm monitor
$ apm gui
$ apm stop myapp

Get APM v1.3.1

Linux static binaries — copy, chmod +x, run. All releases →

Windows Defender false positive — Microsoft Defender may flag APM binaries as Wacatac.B!ml. This is a known false positive: its ML heuristic misfires on statically compiled Go binaries and UPX-compressed executables. It has been reported to Microsoft for review. All other major antivirus engines report these files as clean — see the VirusTotal links below for full scan results.
Linux
x86_64 / amd64
apm-v1.3.1-x64 standard 8.0 MB
MD5: 36c7cd0f0f7c05bca4dcad5db9ff19a8 VirusTotal ↗
apm-v1.3.1-x64-upx UPX 2.5 MB
MD5: c8bbb1664a98d041d0f8d92bbf758521 VirusTotal ↗
Linux
ARM64 / aarch64
apm-v1.3.1-arm64 standard 7.4 MB
MD5: a9a60e77b0cf53d9824e9f94a52f1942 VirusTotal ↗
apm-v1.3.1-arm64-upx UPX 2.2 MB
MD5: 3bac38db4ae656ebaa2fd2c3b4f5f951 VirusTotal ↗
Linux
ARMv7 / armhf
apm-v1.3.1-armhf standard 7.8 MB
MD5: 0715eded264270af1345cc6585123fc4 VirusTotal ↗
apm-v1.3.1-armhf-upx UPX 2.1 MB
MD5: 11463ca1231c60b5f66dde9f3a118197 VirusTotal ↗
Questions & Feature Requests
Join the Discord to ask questions, report issues, or suggest new features. Responses may take a little while — this is a one-person project and I can't be online all day, but I do read everything.
Join Discord
As seen on