JARVIS/verde/panel-verde.sh
sito 1e3e5ca20d carril verde (Hermes Agent): documentacion, panel, voz local y RAG
Rama JARVIS-GREEN, independiente de master (el nucleo naranja queda intacto).

- README propio del carril verde con diagrama de arquitectura y capturas del panel.
- verde/: arranque, panel web, puente de voz (escucha local con faster-whisper +
  habla con la voz del naranja), pruebas (07 voz, 08 escucha), config y notas.
- Integracion RAG: nucleo/saber/busca_cli.py + skill buscar-en-apuntes, para que
  el agente consulte el mismo indice que el nucleo.
- Todo local (127.0.0.1); sin datos personales (rutas y modelo de GPU scrubeados).
2026-08-18 11:26:42 +02:00

58 lines
2.4 KiB
Bash

#!/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