Files
openclaw-mission-control/docs/deployment/systemd/README.md
Claude Thebot efee334843 feat: run at boot (systemd/launchd) and auth token re-sync docs
- Add systemd unit examples and README for local install (Linux)
- Extend deployment README with Run at boot (local install) and merge upstream
- Add Re-syncing auth tokens subsection to gateway provisioning troubleshooting
- install.sh: add --install-service to install systemd user units (Linux)
- DOCUMENTATION.md: session notes

Made-with: Cursor
2026-03-09 22:25:31 -07:00

2.7 KiB

Systemd unit files (local install, run at boot)

Example systemd units for running Mission Control at boot when installed without Docker (e.g. local install in a VM).

Prerequisites

  • Backend: uv, Python 3.12+, and backend/.env configured (including DATABASE_URL, RQ_REDIS_URL if using the queue worker).
  • Frontend: Node.js 22+ and frontend/.env (e.g. NEXT_PUBLIC_API_URL).
  • RQ worker: Redis must be running and reachable; backend/.env must set RQ_REDIS_URL and RQ_QUEUE_NAME to match the backend API.

If you use Docker only for Postgres and/or Redis, start those first (e.g. docker compose up -d db and optionally Redis) or add After=docker.service and start the stack via a separate unit or script.

Placeholders

Before installing, replace in each unit file:

  • REPO_ROOT — absolute path to the Mission Control repo (e.g. /home/user/openclaw-mission-control).
  • BACKEND_PORT — backend port (default 8000).
  • FRONTEND_PORT — frontend port (default 3000).

Example (from repo root):

REPO_ROOT="$(pwd)"
for f in docs/deployment/systemd/openclaw-mission-control-*.service; do
  sed -e "s|REPO_ROOT|$REPO_ROOT|g" -e "s|BACKEND_PORT|8000|g" -e "s|FRONTEND_PORT|3000|g" "$f" \
    -o "$(basename "$f")"
done
# Then copy the generated .service files to ~/.config/systemd/user/ or /etc/systemd/system/

Install and enable

User units (recommended for single-user / VM):

cp openclaw-mission-control-backend.service openclaw-mission-control-frontend.service openclaw-mission-control-rq-worker.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable openclaw-mission-control-backend openclaw-mission-control-frontend openclaw-mission-control-rq-worker
systemctl --user start openclaw-mission-control-backend openclaw-mission-control-frontend openclaw-mission-control-rq-worker

System-wide (e.g. under /etc/systemd/system/):

sudo cp openclaw-mission-control-*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now openclaw-mission-control-backend openclaw-mission-control-frontend openclaw-mission-control-rq-worker

Order

Start order is not strict between backend, frontend, and worker; all use After=network-online.target. Ensure Postgres (and Redis, if used) are running before or with the backend/worker (e.g. start Docker services first, or use system units for Postgres/Redis with the Mission Control units depending on them).

Logs

  • journalctl --user -u openclaw-mission-control-backend -f (or sudo journalctl -u openclaw-mission-control-backend -f for system units)
  • Same for openclaw-mission-control-frontend and openclaw-mission-control-rq-worker.