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).
58 lines
2.4 KiB
Bash
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
|