Quickstart
This page walks you from zero to a supervised, log-captured, auto- restarting service in three commands.
Assumes Lynx is already installed and the daemon is
running (systemctl is-active lynxd or pgrep lynxd).
1. Start something
Section titled “1. Start something”Pick any long-running command. This example uses Node, but it could
just as easily be python, go run, bun dev, or a compiled binary.
lynxpm start "node server.js" --name api --namespace prod --restart alwaysWhat the flags mean:
--name api— the label you’ll refer to it by.--namespace prod— groups this process with every otherprod:*app for bulk operations.--restart always— restart on any exit. Other policies:never,on-failure.
After a successful start, Lynx prints the current process table with
the new row marked ▸:
✓ Started api ID: 019dbd… PID: 2336607 Status: running
┌──────────┬──────┬──────────┬────────┬─────────┐│ id │ name │ namespace│ status │ pid │├──────────┼──────┼──────────┼────────┼─────────┤│ ▸ 019dbd │ api │ prod │ running│ 2336607 │└──────────┴──────┴──────────┴────────┴─────────┘2. Inspect
Section titled “2. Inspect”lynxpm list # full tablelynxpm show api # detail view for one processlynxpm logs api --follow # live stdout/stderr3. Operate on the whole tier
Section titled “3. Operate on the whole tier”Every lifecycle command accepts a namespace selector, so you never
need xargs loops:
lynxpm restart --namespace prod # roll every prod:* applynxpm stop 'prod:*' # halt the tier (quote the glob)lynxpm delete --namespace old --purgeFrom here
Section titled “From here”- Pick your runtime: Runtimes guide — Node / Bun / Python / Go / Rust / Ruby / JVM / PHP recipes.
- Tutorials: Next.js, FastAPI, Django, production hardening.
- Config-as-code:
lynxpm export api > Lynxfile.ymlto capture the exact invocation, then commit it.lynxpm apply Lynxfile.ymlre-applies on any box. - FAQ: Common questions and troubleshooting.