5401ec6ff7
Permanent fix for the recurring 'Krystie's UMP writes silently drop'
problem. Kills the last manual-process row from the drift stack by
moving krystie's hermes-cli gateway under systemd.
Two new assets in deploy/:
- krystie-hermes-gateway.service
- README.md sections describing install + the manual-to-systemd
migration steps
Run from a non-gateway shell to swap:
sudo cp deploy/krystie-hermes-gateway.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now krystie-hermes-gateway.service
71 lines
2.5 KiB
Markdown
71 lines
2.5 KiB
Markdown
# 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 <pid>`). 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.
|