2 min read

Service lifecycle and commands

Table of Contents

Commands follow the shape hum <project> <template> <command>.

hum storefront all-services start
hum storefront all-services status
hum storefront all-services restart
hum storefront all-services stop

Pass service names after start, stop, or restart to operate on a subset. Use --timeout 20s with stop or restart to change the grace period before a forced termination.

Detached runtime

Each service receives an independent session and process group. hum redirects its output to persistent files, writes a registry entry atomically, and exits. The registry includes PID and process-group identity, process start time, command, working directory, port, and log paths.

PID identity is verified before signals are sent. Project operations are serialized, and repeated or concurrent starts are idempotent. If a multi-service start partially fails, hum rolls back only the processes created by that invocation.

Dependencies start before their consumers. Shutdown occurs in reverse dependency order. --detach is retained as a deprecated no-op because start is always detached.

Runtime state lives under $XDG_STATE_HOME/hum/<project> or ~/.local/state/hum/<project>.