Auto-start
setup.sh installs auto-start automatically. This page covers the launchctl commands you need day-to-day on macOS, and where to look on Linux.
macOS LaunchAgent
setup.sh installs a LaunchAgent plist at ~/Library/LaunchAgents/com.penates.plist. launchd loads it at login and keeps the server running. The plist is re-created idempotently by setup.sh, so re-running setup after an update is safe.
Status
launchctl list | grep penatesA row with PID in the second column means the server is running. A row with 0 means it exited cleanly. A negative number is an exit code: check logs/stderr.log.
Restart
Use this after changing .env or pulling code updates:
launchctl kickstart -k gui/$(id -u)/com.penatesStop
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.penates.plistThe LaunchAgent is unloaded and the server stops. To start it again manually:
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.penates.plistLogs
tail -f ~/penates/logs/stdout.logtail -f ~/penates/logs/stderr.logAudit log
Security events (auth attempts, session lifecycle, rate-limit hits) are appended to ~/.penates/audit.log in JSONL format:
tail -f ~/.penates/audit.log | jq -cLinux (systemd)
On Linux, setup.sh installs a systemd user unit at ~/.config/systemd/user/penates.service and enables it with loginctl enable-linger so the service survives without an active session. Equivalent commands:
systemctl --user status penatessystemctl --user restart penatessystemctl --user stop penatesjournalctl --user -u penates -fFor more detail, see Platform notes.