[Unit] Description=Javis Slave (headless voice satellite) Documentation=file:///opt/javis-slave/RASPBERRY_PI.md After=network-online.target sound.target Wants=network-online.target [Service] Type=simple # Adjust User/paths if you installed somewhere else (setup-pi.sh fills these in). User=pi WorkingDirectory=/opt/javis-slave Environment=JAVIS_SLAVE_CONFIG_DIR=/opt/javis-slave/config # PipeWire/PulseAudio (user session) is not available to a system service; # PortAudio falls back to ALSA, which is what we want on a Pi. Environment=PULSE_SERVER=none ExecStart=/opt/javis-slave/.venv/bin/python -m javis_slave --headless Restart=always RestartSec=5 # Give the mic/USB audio time to enumerate after boot before the first retry. TimeoutStartSec=90 # Slightly higher priority for glitch-free capture on small boards. Nice=-5 [Install] WantedBy=multi-user.target