Process Manager
Built into the runtime. No pm2, no separate daemon process.
3va start server.js --name api
3va start server.js --name worker -- --port 4000 # pass args after --
3va start server.js --name one-shot --no-autorestart # never respawn on crash
3va status # all processes
3va status api # one process
3va logs api --lines 200
3va restart api
3va stop api # SIGTERM, then SIGKILL if still alive after 30s
3va delete api # stop + remove logsProcess metadata and logs live in ~/.3va/processes/.
Automatic restart with exponential backoff
When a managed process dies unexpectedly, the supervisor restarts it automatically with exponential backoff:
500 ms → 1 s → 2 s → 4 s → … → capped at 30 sIt gives up after 15 consecutive crashes (tunable with --max-restarts).
The Restarts column in 3va status counts both automatic and manual
restarts.
3va stop sends SIGTERM, then polls every 200ms, then sends SIGKILL if
the process is still alive after 30s. It always stops the process for good
— it never triggers a respawn, regardless of the backoff state.
Disabling auto-restart
Start a process with --no-autorestart to disable automatic restarts for
it specifically; it will then be reported as error after a crash until you
3va restart it by hand.
Restarted processes keep their permissions
A restarted process keeps the exact same permissions it had at first start
— same CLI flags, same package.json "3va" grants. Restarting is not a
way to escalate what a process can access.