[Unit] Description=Mosaic tmux fleet agent %i Documentation=https://git.mosaicstack.dev/mosaicstack/stack Requires=mosaic-tmux-holder.service After=mosaic-tmux-holder.service PartOf=mosaic-tmux-holder.service # Do not attempt a seat before its generated env exists. `install` enables this # unit (WantedBy=default.target) but on a roster-v2 fleet the reconciler owns the # generated env, so between `install` and the first `apply`/`regen --write` there # is a boot window where ExecStart would run against an absent env file and the # launcher would fail the unit. A skipped unit is the honest state for "enabled # but not yet configured"; systemd re-evaluates the condition on every start, so # the seat comes up on the next start once the reconciler has written env. ConditionPathExists=%h/.config/mosaic/fleet/agents/%i.env.generated [Service] Type=oneshot # Remove loader and noninteractive-shell controls before ExecStart loads env. UnsetEnvironment=LD_PRELOAD BASH_ENV ENV RemainAfterExit=yes # Never preload the projection. The launcher starts from a fixed minimal # environment and strictly validates generated/local data before tmux effects. ExecStart=/usr/bin/env -i HOME=%h MOSAIC_AGENT_NAME=%i PATH=/usr/bin:/bin /bin/bash --noprofile --norc %h/.config/mosaic/tools/fleet/start-agent-session.sh %i ExecStop=-/usr/bin/env -i HOME=%h MOSAIC_AGENT_NAME=%i PATH=/usr/bin:/bin /bin/bash --noprofile --norc %h/.config/mosaic/tools/fleet/start-agent-session.sh --stop %i [Install] WantedBy=default.target