JARVIS/config/permisos_maquina.sh
sito 8e4bc8ad94 JARVIS: asistente de voz local para Linux
Nucleo propio: oye con whisper.cpp, piensa con un modelo de Ollama, habla
con Piper, y hace RAG sobre los apuntes del usuario. 100% local, sin
cuentas ni claves.

Escrito bajo una restriccion dura, 4 GB de VRAM: el cerebro y whisper
comparten tarjeta y solo caben porque estan dimensionados para ello. El
RAG usa embeddings estaticos con busqueda hibrida; la voz clonada se sirve
de una cache de frases.

Incluye instalador (install.sh), requisitos, y documentacion del stack,
del manejo de root y de las acciones. Los apuntes indexados y el diario NO
se incluyen: son privados y el .gitignore los bloquea.
2026-08-16 15:34:37 +02:00

49 lines
2.2 KiB
Bash
Executable file

#!/usr/bin/env bash
# Sacar a JARVIS de la burbuja: que lo que ejecute sea en la maquina de verdad.
#
# El sintoma era que el asistente contestaba que "esta en un contenedor" y no
# podia hacer casi nada. Las 134 acciones del catalogo ya salian al host (todas
# llevan host:true), pero los comandos LIBRES —los que se inventa el modelo
# cuando lo que pides no esta en el catalogo— corrian dentro del sandbox, donde
# no hay ni tu Debian ni tus discos:
#
# dentro: PRETTY_NAME="GNOME 50 (Flatpak runtime)" sin /media, sin systemctl
# fuera: PRETTY_NAME="Debian GNU/Linux 12" /media, systemctl, docker
#
# Son dos capas distintas y hacen falta las dos:
#
# 1. `virtualization` (ajuste de Newelle). Decide si los comandos del modelo
# llevan delante `flatpak-spawn --host`. Estaba en true = todo dentro.
# Es lo que mira _host_prefix() en integrations/default_tools.py.
#
# 2. Los permisos del flatpak. Aunque los comandos salgan al host, las
# herramientas de FICHEROS de la app (leer, editar, indexar) son Python
# corriendo dentro: solo ven lo que el sandbox les deje. Estaba en
# `filesystems=home`, asi que fuera de tu carpeta personal no veia nada.
#
# Lo que esto NO quita: el candado de la contraseña al abrir, la confirmacion
# de lo destructivo, ni el dialogo de root. Esos siguen. Lo que cambia es que
# cuando TU autorizas algo, se ejecuta donde tiene que ejecutarse.
set -eu
APPID=io.github.qwersyk.Newelle
RAMA=${1:-master}
echo "1. comandos del modelo -> a la maquina, no a la burbuja"
flatpak run --command=gsettings "$APPID//$RAMA" set "$APPID" virtualization false
echo "2. permisos de ficheros -> todo el disco"
# host = el sistema de ficheros (salvo /usr y /etc, que van aparte)
# host-etc = /etc, para leer configuracion del sistema
# host-os = /usr, para mirar lo instalado
flatpak override --user \
--filesystem=host \
--filesystem=host-etc \
--filesystem=host-os \
"$APPID"
echo
echo "como queda:"
printf ' virtualization = %s\n' \
"$(flatpak run --command=gsettings "$APPID//$RAMA" get "$APPID" virtualization)"
flatpak info --show-permissions "$APPID//$RAMA" 2>/dev/null | grep -E "^filesystems=" | sed 's/^/ /'