# Deploy assets Systemd units to install at `/etc/systemd/system/`. ## ump-recall-sidecar.service Manages the ump-recall sidecar (`/root/ump-recall/src/server.js`) — the RRF-fused retrieval proxy that fronts the canonical ump store, the Qdrant vector index, and the Ollama embedding model. **Install (idempotent):** ```bash sudo cp deploy/ump-recall-sidecar.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now ump-recall-sidecar.service sudo systemctl status ump-recall-sidecar.service ``` **Verify:** ```bash curl -s http://127.0.0.1:4380/health | python3 -m json.tool ``` Will auto-restart on crash, after reboot, or after daemon-reload. Logs land in the system journal (`journalctl -u ump-recall-sidecar`). **Dependents:** the ump-recall-mcp.js Hermes MCP shim proxies `recall` through this service's `POST /recall` endpoint. Without it active, recall falls back to the canonical ump directly (lower quality; no RRF fusion, no graph channel). **Why this exists:** Before this unit landed (2026-07-14), the sidecar was launched as a background `node src/server.js` process under the Hermes session. It died whenever Hermes restarted (session close, gateway restart, machine reboot). Then `ump.recall` would fall back to canonical ump via the shim's fallback path — which works, but loses RRF fusion and the graph channel. Now the sidecar is persistent and the MCP recall quality is uninterrupted. ## krystie-hermes-gateway.service Manages the krystie-profile Hermes gateway (the Telegram session attributed to krystie). **Install (idempotent):** ```bash sudo cp deploy/krystie-hermes-gateway.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now krystie-hermes-gateway.service sudo systemctl status krystie-hermes-gateway.service ``` **Important:** Before installing, stop any manually-launched krystie gateway (`pgrep -f 'gateway run --replace -p krystie'` then `kill -INT `). Wait ~10s for the Telegram session to release, then start the systemd unit. Telegram reconnects in ~5s. **Deps:** ump-memory.service, ump-recall-sidecar.service. **Why this exists:** Before this unit, the krystie gateway was launched manually, holding stale env (including UMP_DIR) from whatever was in the env when the user typed the command. After the openclaw→Hermes ump migration, krystie's MCP shim children were inheriting stale UMP_DIR and silently dropping writes. Now the gateway is systemd-managed so its shim and the canonical ump recompute their env together on every restart — drift can no longer accumulate silently.