Files
mission-control-v2/deploy/mc2-gateway.service
T
Hitonabi 7223ca96c1 Deploy-Robustheit: Selbst-Reset-Guard + TimeoutStopSec=5 (Lehren P1-Deploy 15.07.)
1) deploy.sh fuehrt sich nach dem git reset einmal frisch neu aus (exec-Guard,
   Env-Marke MC2_DEPLOY_REEXEC): der Reset ersetzt die laufende Datei, bash las
   einen alt/neu-Zeilen-Mix — beim P1-Deploy fielen so daemon-reload und der
   mc2-gateway-Start aus (Lucy 502, Heilung von Hand).
2) mc2-gateway.service TimeoutStopSec=5: uvicorn wartete beim Stop auf offene
   LLM-Streams (default 90 s SIGKILL-Fenster ohne Listener = 502-Fenster bei
   jedem Deploy-Restart, live gemessen 14:29->14:31). Stateless Proxy, Clients
   retrien — hart nach 5 s ist verlustarm.
UMBAUPLAN: Annahme-Hinweis fuer P2 (einmal deploy.sh von Hand nachlaufen lassen,
weil der Guard erst MIT diesem Deploy an Bord kommt).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 14:47:35 +02:00

32 lines
1.5 KiB
Desktop File

# systemd-USER-Unit für den MC2-Gateway — der /v1-Datenpfad als eigener Prozess (UMBAU v3 P1).
# Durch diesen Prozess läuft JEDER LLM-Aufruf der Box (Lucys Hirn, Nacht-Crons, Worker-
# Delegation, Vision) — er ist bewusst winzig, wird praktisch nie angefasst und startet
# sich immer selbst neu (Restart=always: die Wirbelsäule steht, bevor es jemand merkt).
# Loopback-only (:9010): alle kritischen Verbraucher sind box-lokal; LAN-Clients
# (IDE-Lane) kommen weiter über MC2 :9001/v1, das roh hierher durchreicht.
# Sudo-frei wie alle MC2-Units: ~/.config/systemd/user/ + systemctl --user.
[Unit]
Description=MC2 Gateway (/v1-Datenpfad: model:auto-Routing + Bild-Weiche)
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=%h/mission-control-v2/backend
ExecStart=%h/mission-control-v2/backend/.venv/bin/python -m uvicorn gateway_app:app --host 127.0.0.1 --port 9010
Environment=PYTHONPATH=%h/mission-control-v2
Environment=MC_LLAMA_SWAP_URL=http://127.0.0.1:8080
Environment=MC_CONFIG_PATH=/etc/llama-swap/config.yaml
Environment=MC_MODELS_DIR=/srv/models
Restart=always
RestartSec=2
# Stoppen darf nicht warten: der Gateway hält minutenlange LLM-Streams offen — uvicorns
# „Waiting for connections to close" + default 90 s TimeoutStop machten jeden Restart zum
# 502-Fenster (15.07. live gemessen, 14:29→14:31). Stateless Proxy → nach 5 s hart beenden
# ist verlustarm; Clients (Hermes api_max_retries=3) wiederholen abgerissene Anfragen.
TimeoutStopSec=5
[Install]
WantedBy=default.target