Service lifecycle & off switch
Service registration
Every install path ends in the same command:
lumen-agent service install --start
One implementation writes the systemd unit, the launchd plist, or the SCM registration. Two field lessons are baked in:
- Reinstalls replace the loaded service. On macOS, bootstrapping over an already-loaded label fails and leaves the stale daemon running an old config — so activation boots the label out first and retries.
- "Registered" is not "serving." After
--start, the command polls/v1/health(and the proxy's/lumen/healthwhen enabled) and fails loudly with the log location if either never answers.
Verify any machine in one command:
lumen-agent status # exit 0 answered, 3 daemon down, 1 no report
The off switch
sudo lumen-agent disable --reason "incident 2026-08-01"
sudo lumen-agent enable
disable writes a root-owned marker (/etc/lumen/disabled), and every
collector reads it before it acts — including the Claude Code hook guard,
which never talks to the daemon and survives service stops and uninstalls.
It is the only thing that turns that guard off.
What disable does not do is take anything down:
- Every listener stays open; the proxy forwards byte-for-byte, streamed responses included.
- Nothing is un-routed — the machine's tooling still points at the proxy, and
a disabled proxy still answers its health probe (with
"disabled": true) so the fail-open machinery keeps holding. - The daemon keeps heartbeating, so the endpoint reads as disabled, not offline.
Nothing is recorded while it is off — a quiet findings file during that
window means the agent was not looking. lumen-agent status prints the
control block first, so it is never a guess.
Uninstall
sh install.sh --uninstall # or: lumen-agent service uninstall
Uninstalling un-routes the machine as well as removing the binary — an agent removed while a settings file still pins its proxy would leave the machine pointed at a dead port:
- The revert runs as root, but every target lives in a home directory, so
the human is resolved from
SUDO_USERand rewritten files are chowned back to them. - Other users are named, never rewritten — each is told the
lumen-agent autoconfig revertto run. - A failed revert never fails the uninstall. Removing a security agent must not be the operation that gets stuck.
Config and state are kept (/etc/lumen, /var/lib/lumen): findings are
evidence, and deleting them is a separate, deliberate act.
Upgrades
lumen-agent upgrade --check
lumen-agent upgrade --to v0.5.0
lumen-agent upgrade --rollback
The manual path reads version.json from the download CDN and verifies the
archive checksum before the atomic swap. Fleet-driven staged rollouts arrive
with the control plane.