Files
ROMFASTSQL/proxmox/lxc171-claude-agent/discord-bridge/dashboard/claude-discord-dashboard.service
Claude Agent 7abefa2b46 feat(discord-bridge): dashboard de control si restart, dupa modelul agentului echo
Panou web pe 127.0.0.1:18790, unit systemd separat de al puntii. Server stdlib
(fara dependinte noi), tokenii de design si tiparul de endpoint-uri preluate din
/home/moltbot/echo-core/dashboard (handlers/eco.py) de pe LXC 110.

Arata: starea unitatii (uptime, PID, memoria cgroup, restarturi), firele din
state.json cu tur in zbor si cost, costul zilei fata de plafon, confirmarile
PreToolUse in asteptare (aprobabile direct din pagina), bot.log / infra.log si
opt verificari de diagnostic.

Face: start / stop / restart pe punte, cautarea si curatarea orfanilor prin
cleanup.py, repornirea propriului serviciu.

Garantii, cu teste:
- unitatea controlata e fixa in cod; un {"unit": "ssh.service"} in cerere nu
  schimba nimic, altfel panoul ar fi systemctl remote fara parola;
- stop/restart intorc 409 cu lista firelor active si cer force explicit, fiindca
  KillMode=control-group taie tururile in desfasurare;
- state.json se citeste fara lock: panoul nu are voie sa blocheze botul;
- diagnosticul pica daca reapare Bash(ssh:*) in deny (regresia de azi).

Uptime-ul se calculeaza din time.monotonic(), nu din /proc/uptime: in LXC acela
e virtualizat de lxcfs si da diferenta negativa fata de monotonic-ul systemd.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B29CApsP1JkSdjYaGaHpE7
2026-08-30 13:18:38 +00:00

43 lines
1.7 KiB
Desktop File

# Unit systemd de UTILIZATOR pentru dashboard-ul de control al puntii Discord.
#
# Se instaleaza in ~/.config/systemd/user/claude-discord-dashboard.service
# (vezi ops/install.sh). Ruleaza ca `claude`, ACELASI utilizator ca puntea —
# de asta poate face `systemctl --user restart claude-discord` fara sudo.
#
# systemctl --user daemon-reload
# systemctl --user enable --now claude-discord-dashboard
# journalctl --user -u claude-discord-dashboard -f
[Unit]
Description=Dashboard de control pentru puntea Discord (LXC 171 claude-agent)
Documentation=file:///workspace/romfastsql/proxmox/lxc171-claude-agent/discord-bridge/dashboard/README.md
After=network.target
[Service]
Type=simple
WorkingDirectory=%h/.claude-discord
EnvironmentFile=%h/.claude-discord/env
Environment=PYTHONUNBUFFERED=1
# nvm, ca verificarea `CLI claude` din /api/doctor sa vada acelasi PATH ca botul
Environment=PATH=%h/bin:%h/.nvm/versions/node/v20.19.6/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# Stdlib only: nu are nevoie de venv-ul botului.
ExecStart=/usr/bin/python3 /workspace/romfastsql/proxmox/lxc171-claude-agent/discord-bridge/dashboard/api.py
# NU KillMode=control-group aici: dashboard-ul nu are copii de curatat, iar
# `/api/restart-self` se bazeaza pe iesirea curata + Restart=always.
Restart=always
RestartSec=2
# Panou de citit stare, nu proces de lucru: plafon strans, ca sa nu concureze
# cu puntea pentru memoria containerului (istoric de OOM, 2026-06-24).
MemoryHigh=192M
MemoryMax=384M
StandardOutput=append:%h/.claude-discord/logs/dashboard.log
StandardError=append:%h/.claude-discord/logs/dashboard.log
SyslogIdentifier=claude-discord-dashboard
[Install]
WantedBy=default.target