# Privacidad La premisa del proyecto es que nada sale de la máquina. No es un eslogan: se verifica, y este documento dice qué es local, qué podría salir y qué se ha dejado deliberadamente fuera de este repositorio. ## Qué es local | Pieza | Dónde corre | |---|---| | Cerebro (modelo) | Ollama en `127.0.0.1:11434` | | Escucha (STT) | whisper.cpp, en la propia máquina | | Voz (TTS) | Piper / XTTS, en la propia máquina | | Memoria de conversación | ficheros locales | | RAG | índice local sobre apuntes locales | Ninguna de estas piezas necesita una cuenta ni una clave. El asistente funciona con la máquina desconectada de internet. ## Qué puede salir, y no es un fallo - **La búsqueda web**, solo si el modelo decide usarla para una pregunta que lo pide. Es una herramienta que se invoca, no una fuga de fondo, y se avisa. Fuera de eso, no hay tráfico saliente durante el uso normal. ## Qué NO está en este repositorio, a propósito Este código es público; los datos del usuario no. El `.gitignore` bloquea, y nunca se deben añadir: - **`nucleo/datos/saber.jsonl`** y sus derivados (`cosecha.jsonl`, `sintesis.jsonl`): contienen el TEXTO de los apuntes indexados. Publicarlos publicaría los apuntes. - **`nucleo/datos/diario.jsonl`**: es lo que el usuario le ha dicho al asistente por voz. - **`voz/ref/`** y las cachés de audio: la voz de referencia y las frases sintetizadas son personales. - **Entornos, modelos y datasets**: se reconstruyen; no son código. Lo único de `nucleo/datos/` que sí va es `acciones.json` (el catálogo de lo que el asistente sabe hacer) y su generador: definen capacidades, no datos. ## Cómo comprobarlo - Que nada nuestro escuche fuera de loopback: `ss -ltnp | grep -vE '127\.0\.0\.1|\[::1\]'` - Que el cerebro apunta a local: revisar el endpoint en `nucleo/cerebro/`. - Que no hay claves en el repo: no hay ningún fichero de credenciales; el manejador de sudo (`nucleo/manos/sudo_root.py`) guarda la contraseña solo en memoria durante la sesión y la borra al terminar.