#!/usr/bin/env bash # El frontal del verde: el dashboard web de Hermes en una ventana propia, como el # panel del naranja (chromium --app). Local, en 127.0.0.1, sin cuenta en la nube. # # ./panel-verde.sh arranca el dashboard y lo abre en su ventana # ./panel-verde.sh --solo-servir solo levanta el servidor y dice la URL # ./panel-verde.sh --stop para el dashboard # # El dashboard trae chat, config y sesiones. Es el equivalente al panel del # naranja: una página local abierta con `chromium --app`, sin barra ni pestañas, # con su propio icono en la barra de tareas. NO se registra en Nous Portal (eso # ataría el panel a la nube); se usa tal cual en loopback. set -uo pipefail RAIZ=$(cd -P "$(dirname "${BASH_SOURCE[0]:-$0}")/.." && pwd) HERMES="$HOME/.hermes/hermes-agent/venv/bin/python $HOME/.hermes/hermes-agent/hermes" PUERTO=${VERDE_PANEL_PUERTO:-9119} URL="http://127.0.0.1:$PUERTO/" PERFIL=${XDG_CACHE_HOME:-$HOME/.cache}/jarvis-verde-panel CLASE=jarvis-verde if [ "${1:-}" = "--stop" ]; then $HERMES dashboard --port "$PUERTO" --stop 2>/dev/null echo "dashboard del verde parado" exit 0 fi # Arrancar el dashboard si no responde ya. if [ "$(curl -s -o /dev/null -w '%{http_code}' "${URL}healthz" 2>/dev/null)" != "200" ]; then echo "arrancando el dashboard en $URL ..." nohup $HERMES dashboard --port "$PUERTO" --host 127.0.0.1 --no-open \ >"${TMPDIR:-/tmp}/jarvis-verde-dashboard.log" 2>&1 & for _ in $(seq 1 30); do sleep 2 [ "$(curl -s -o /dev/null -w '%{http_code}' "${URL}healthz" 2>/dev/null)" = "200" ] && break done fi if [ "$(curl -s -o /dev/null -w '%{http_code}' "${URL}healthz" 2>/dev/null)" != "200" ]; then echo "el dashboard no levantó; mira ${TMPDIR:-/tmp}/jarvis-verde-dashboard.log" >&2 exit 1 fi echo "dashboard listo en $URL" [ "${1:-}" = "--solo-servir" ] && exit 0 # Abrirlo como aplicación, igual que el panel del naranja. for navegador in chromium chromium-browser google-chrome brave-browser; do command -v "$navegador" >/dev/null || continue exec "$navegador" --app="$URL" --user-data-dir="$PERFIL" --class="$CLASE" \ --window-size=1500,940 --no-first-run --no-default-browser-check \ --disable-features=TranslateUI >/dev/null 2>&1 done if command -v firefox >/dev/null; then echo "sin chromium: se abre en Firefox, con su barra" >&2 exec firefox --new-window "$URL" >/dev/null 2>&1 fi echo "no hay navegador; abre a mano: $URL" >&2