#!/usr/bin/env bash # Instala Hermes Agent para el carril verde. NO arranca nada. # # ./instalar.sh instala # ./instalar.sh --revisar solo baja el instalador y te lo enseña # # ── Por que un envoltorio y no el curl del video ──────────────────────────── # # El video (y la web de Nous) dicen: # # curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash # # Eso ejecuta 3469 lineas que nadie ha leido, con sudo por medio, en una # maquina que tiene COFRE dentro. Aqui se baja a fichero, se queda en el repo # junto a su sha256, y se ejecuta desde disco. Cuesta diez segundos y a cambio # el instalador es auditable y comparable entre versiones. # # ── Que se le pasa, y por que ────────────────────────────────────────────── # # --skip-setup El asistente interactivo pide proveedor y clave por /dev/tty. # No se quiere: la configuracion se escribe a mano en # config.yaml, que queda versionada y explicada. Ademas el # asistente es lo unico del instalador que pediria credenciales. # # Chromium SI se instala (no se pasa --skip-browser): son ~400 MB pero deja el # paso 7 del video listo sin reinstalar nada. # # ── Que NO hace, comprobado leyendo el codigo ────────────────────────────── # # main() llama a maybe_start_gateway(), que suena a que arranca algo. No lo # hace: sale con `return 0` si no encuentra un token de mensajeria en # $HERMES_HOME/.env. Como el .env se deja vacio, nunca llega a preguntar. # Por eso env.ejemplo NO se copia con los tokens descomentados. # # El sudo solo se usa para paquetes de sistema de apt. En esta maquina gcc, # python3-dev, libffi-dev y build-essential ya estaban, asi que lo unico que # pidio fue Playwright, lo declino y degrado solo: instala Chromium en la cache # del usuario e imprime el comando que un administrador puede correr luego. set -uo pipefail AQUI=$(cd -P "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd) URL=https://hermes-agent.nousresearch.com/install.sh SCRIPT=$AQUI/install-oficial.sh LOG=$AQUI/instalacion.log echo "Bajando el instalador oficial..." curl -fsSL "$URL" -o "$SCRIPT" || { echo "no se pudo bajar"; exit 1; } chmod +x "$SCRIPT" echo echo " lineas: $(wc -l < "$SCRIPT")" echo " sha256: $(sha256sum "$SCRIPT" | cut -d' ' -f1)" echo if [ "${1:-}" = "--revisar" ]; then echo "Bajado en $SCRIPT. Lee y vuelve sin --revisar." exit 0 fi echo "Instalando (tarda: ~1,5 GB de PyPI y ~400 MB de Chromium)..." bash "$SCRIPT" --skip-setup 2>&1 | tee "$LOG" echo echo "Instalado. NO se ha arrancado nada." echo echo "La configuracion NO se copia encima: el instalador deja un config.yaml de" echo "1890 lineas con su documentacion dentro, y machacarlo la perderia. Se" echo "editan a mano los bloques model, stt y tts. Cuales y por que, en:" echo " $AQUI/config.yaml" echo echo "Y OJO: ese fichero declara provider y base_url dos veces dentro de" echo "model:. En YAML gana la ultima. Comprueba PARSEANDO, no leyendo:" echo " python3 -c \"import yaml;print(yaml.safe_load(open('\$HOME/.hermes/config.yaml'))['model'])\"" echo echo "El .env del instalador ya viene sin claves. Que habilitaria cada una:" echo " $AQUI/env.ejemplo" echo echo "Comprobacion en frio, no arranca nada:" echo " $AQUI/verde-launcher.sh --status"