Skip to content

FAQ

Direct answers, no detours. Grouped by topic.


Can I…?Yes/NoExample / Note
Spaces in --name--name "my api"
Colon : in --name--name "TEST: Release 1" — address with ns:name
Symbols # @ ! , ( ) + = & in --name--name "api (v2) #blue"
Accents / emoji in --nameASCII only. Use app-espanol not app-español
; " $ backtick ` <>in—name`
Name > 128 chars128 limit
Spaces in --namespacestrict [a-zA-Z0-9._-], 64 chars
Two processes with same ns:nameERR_CONFLICT
Omit --nameauto: <basename>-<shortid>
Rename a live processdelete+recreate with new name

Can I…?Yes/NoExample
Start and forgetlynxpm start app.js --restart always
Stop all in a namespacelynxpm stop --namespace prod or lynxpm stop 'prod:*'
Stop / restart / delete every managed processlynxpm stop '*' (quote the glob)
Restart several at oncelynxpm restart a b c
Reload spec without stopping processlynxpm reload does stop+start; no hot-reload of spec
Send custom signalonly --stop-signal for stop; use kill -USR1 $(pidof app)
Scale without restartinglynxpm scale app 5 (respects running instances)
Scale down to 0lynxpm scale app 0 = equivalent delete all
Reset Restarts counterlynxpm reset app

Can I…?Yes/NoExample
Infinite restart--restart always --max-restarts 0 (0 = no limit via env)
Exponential backoff--backoff expo (default)
Restart only on crash--restart on-failure (default)
Never restart--restart never
Stop on exit code X--stop-on-exit 0,143,15
Custom stop timeout--stop-timeout 30000 (30s)
HTTP health check proberemoved due to SSRF — use sidecar: lynxpm start "curl -sSf http://localhost/h || exit 1" --cron '@every 10s' --shell
Unix-style cron--cron "0 */6 * * *"
Interval cron--cron "@every 5s" (min 5s)

Can I…?Yes/NoAlternative
--env KEY=VAL inlinedoes not exist. Use --env-file
Pass .env file--env-file .env.production
Relative paths in --env-filerelative to --cwd
.. in --env-filerejected ERR_BAD_REQUEST
View env of a live process⚠️lynxpm show <name> shows spec; real env in /proc/<pid>/environ
Secrets without leaking in ps--isolation dynamic uses LoadCredential (systemd)

Can I…?Yes/NoExample
Cap memory--memory-max 512M (accepts k/m/M/G or bytes)
Cap CPU %--cpu-max 100 (100=1 core, 200=2 cores)
Cap number of threads/procs--tasks-max 64
Cap file descriptors⚠️indirect — runtime default RLIMIT_NOFILE
Cap disk I/Onot exposed (systemd IOWeight not wired)
Memory < 1 MiBminimum floor

Can I…?Yes/NoMode
Run without extra isolation--isolation self (default)
Synthetic per-process user--isolation dynamic (system mode only, systemd)
Sandbox without sudo--isolation sandbox (user+PID namespace + landlock)
Block writes to /home, /etc--isolation sandbox (landlock allowlist)
--cwd to /etcblocked: /etc /proc /sys /boot /dev /run
Path traversal ../../etccanonicalized + rejected
--shell in system modeblocked (hardening); user mode yes
View socket permssrw-rw---- lynx:lynxadm (system) / 0600 (user)

Can I…?Yes/NoExample
Follow logslynxpm logs api --follow
stdout onlylynxpm logs api --stdout
stderr onlylynxpm logs api --stderr
Last N lineslynxpm logs api --lines 50
JSON-formatted logs--log-format json at start
Automatic rotation50 MiB default, 3 backups (tunable env)
Truncate logslynxpm flush api
Redirect to custom dir--log-dir /var/log/my-app
Redirect stdout to stderrboth go to separate files

Can I…?Yes/NoNote
Multiple apps in one YAMLall in the file’s namespace
Apply incrementally⚠️apply always creates new; must delete before re-applying
Export running state → YAMLlynxpm export --namespace prod > apps.yml
Dependencies between appsnot implemented; starts independently
Per-app env-fileenv_file: .env in each entry
Lint before applynot exposed (though apply validates)

Can I…?Yes/NoExample
Preview without executing--dry-run / -n
Silence output--quiet / -q
Parseable JSON outputlynxpm list --json / lynxpm version --json
Shell completionlynxpm completion bash|zsh|fish
Namespace:name syntaxlynxpm show prod:api
Resolve by ID prefixlynxpm show 019d9 (if unique)
Multiple lifecycle commands in 1 cmdlynxpm stop a b c d
Bulk by namespace (stop/restart/reload/reset/delete/flush)lynxpm restart --namespace prod or lynxpm restart 'prod:*'
HTTP APIUnix socket IPC only
Remote daemon via TCPsocket is local-only by design

Can I run…?Yes/No
Node / Bun / Deno
System Python / venv / uv / uvx
Go source / binary
Rust / C / C++ / Nim / OCaml / Haskell
Ruby / Perl / PHP / Lua / R / Tcl
Java / JVM (Kotlin, Scala)
Erlang / Elixir
Bash scripts
Docker container⚠️
Windows .exe
GUI apps (X11/Wayland)⚠️

See RUNTIMES.md for per-runtime recipes.


Can I…?Yes/NoHow
Auto-start on bootsudo lynxpm startup (systemd)
Restore specs after rebootautomatic on daemon start
Backup statecopy ~/.config/lynx/apps/*.json
Migrate between hostslynxpm export → copy YAML → lynxpm apply
Kill daemon without killing apps✅ (dynamic) / ❌ (self)in dynamic apps survive (systemd-managed); in self they die

FeatureAlternative
HTTP health check (--health-url)Sidecar cron with curl
lynxpm attach / interactive stdinno docker exec-style
Prometheus metrics endpointParse lynxpm list --json from your scraper
Watch file mode (--watch)Use nodemon/cargo-watch as sidecar
Deploy via SSHUse Ansible / Terraform / rsync + lynxpm apply
Modules/pluginsNo plugin system
Hot-reload live specDo delete + apply
Mac / WindowsLinux-only (kernel features required)

ErrorWhat it meansFix
cannot reach the Lynx daemondaemon offlynxd & (user) or sudo systemctl start lynxd (system)
ERR_RATE_LIMITexceeded 100 req/sWait. Drop to normal burst.
ERR_CONFLICT: ... already existsduplicate ns:namedifferent name or namespace
invalid name formatname with forbidden charonly a-zA-Z0-9 ._-:#@!,()+=&
cwd is a restricted system directory--cwd /etc etcuse /srv, /var/lib/lynx-pm, /tmp
cwd is not accessible to the daemon useruser mismatch system mode--cwd /srv/something that lynx user can read
ERR_UNSUPPORTED: run_as=dynamic requires system daemondynamic in user modeuse sandbox or run daemon in system-mode
fork/exec: executable not foundbinary not in daemon PATHlynxpm install-tools
ambiguous argument 'X'multiple matchesuse full ns:name or ID