← ClaudeAtlas

pm2listed

Observe + manage the host's pm2-supervised app stack through the host-side pm2-broker — status, app health, log tails, and scoped restarts, holding no host access yourself. The admin shell's deploy-confirmation companion. Use when verifying a deploy, checking the live app, or bouncing a declared process.
jedbjorn/subfloor · ★ 14 · Code & Development · score 76
Install: claude install-skill jedbjorn/subfloor
# pm2 — driving the host process stack Observe + manage the host's pm2-supervised app from the sandbox: process status, app health, log tails, scoped restarts. Opt-in + link-only (`common=0`; **admin** + **devops** flavors): the operator brings a host whose app is already pm2-managed; you drive a scoped loop against it. ## Every verb goes through the host-side pm2-broker The sandbox has no `pm2` binary and no route to the host's 127.0.0.1-bound ports — NEVER shell out to pm2 or curl a host port directly (even read-only `curl host:8000/health` has no route). Call the broker over its unix socket in the bind-mounted repo; the broker runs pm2 and curls the app's local port host-side. Detail: `.super-coder/docs/pm2-broker.md`. ```bash SOCK="$(sc pm2-broker-sock)" curl -s --unix-socket "$SOCK" http://pm2/health # liveness check first ``` "not reachable" = broker down -> ask the operator to run `sc pm2-broker-up` on the host. You cannot start it yourself (host-side process). ## Precondition — `pm2` block in `.super-coder/instance.json` ```json "pm2": { "processes": ["myapp-api", "myapp-ui"], "health_url": "http://127.0.0.1:8000/health", "allow_lifecycle": false } ``` - No `pm2` block = no stack linked -> stop; ask the operator to set it (hand-edit, or `PUT /api/pm2`). - `processes` = fail-closed allow-list: every verb (even `status`) works only against names listed there; empty/absent list denies all. You see what the fork declared, never the hos