Agent systemd units
culture mesh setup and culture mesh update write per-agent systemd user units to ~/.config/systemd/user/culture-agent-<nick>.service so the agents come up automatically after reboot under Restart=on-failure.
The unit’s ExecStart is intentionally minimal:
ExecStart=/usr/bin/culture agent start <nick> --foreground
No --config is passed. culture agent start falls through to the argparse default — ~/.culture/server.yaml, the manifest the rest of the CLI uses. Anything specified in that manifest (workdir, channels, backend) is what the daemon reads.
Recovering from stale pre-10.3.5 units
Before culture 10.3.5, the unit generator pinned a legacy --config <workdir>/.culture/agents.yaml path that culture had already migrated away from. On machines where that per-workdir file no longer exists, the daemon exited 1 immediately, systemd restarted it 5 seconds later, and the cycle repeated indefinitely (real deployments hit restart counters in the tens of thousands). To the user it looked like “agents not awake” — every mention landed during a 5-second restart window with no daemon listening.
If journalctl --user -u culture-agent-<nick>.service shows a tight loop of [Errno 2] No such file or directory: '<workdir>/.culture/agents.yaml' followed by Scheduled restart job, restart counter is at NNNN, you have a stale unit. Recover with:
# Stop and remove the stale unit:
systemctl --user disable --now culture-agent-<nick>.service
rm ~/.config/systemd/user/culture-agent-<nick>.service
systemctl --user daemon-reload
# Confirm it's gone:
systemctl --user status culture-agent-<nick>.service # should say "not-found"
# If the manifest at ~/.culture/server.yaml is also stale (e.g. the
# nick's workdir was renamed or its culture.yaml deleted), tidy it up:
culture agent unregister <suffix> # see `culture agent status` for hints
culture agent register <workdir> # if the workdir's culture.yaml is fresh
# Start the agent manually to confirm it works without systemd in the way:
culture agent start <nick>
# If you want systemd auto-start back, re-run mesh setup for a populated
# mesh.yaml:
culture mesh setup --config ~/.culture/mesh.yaml
culture mesh setup only re-installs units for agents listed in the agents: block of mesh.yaml. If your mesh.yaml has an empty agents: [], the recovery stops at the manual culture agent start step — there is currently no per-agent install command decoupled from mesh.yaml.
See also
culture mesh setup/update— top-level mesh lifecycle that owns unit installation.culture agent register/unregister— manifest management for the~/.culture/server.yamlsource of truth.