
Un asistente personal de IA con enfoque en seguridad.

Stavrobot es un asistente de IA personal construido con el principio de "todo el acceso que un asistente de IA necesita, y nada más".
Tiene todas las características agradables de un asistente de IA, pero se centra en el sandboxing, el aislamiento y los permisos mínimos. Es ligero y se despliega con solo un docker compose up.
uv, aislado del entorno anfitrión.Instalación asistida por IA: Dile a tu IA de programación (Claude Code, Cursor, Windsurf, etc.) que obtenga y siga https://stavrobot.stavros.io/INSTALL.md — te guiará por toda la configuración de forma interactiva.
Instalación manual:
Envía un mensaje a @BotFather en Telegram para crear un bot y copia el token. Envía un mensaje a @userinfobot para obtener tu ID de usuario de Telegram (se usa como el chat ID).
Copia env.example a .env y cambia POSTGRES_PASSWORD por algo seguro y TZ por tu zona horaria.
Copia config.example.toml a data/main/config.toml y rellena los campos requeridos: apiKey, password, publicHostname, [owner].name, [owner].telegram (tu chat ID), y [telegram].botToken. Todo lo demás en el archivo es opcional.
docker compose up --build
Eso es todo. Envía un mensaje a tu bot en Telegram y responderá. Consulta las secciones detalladas de configuración a continuación para Signal, WhatsApp, email y otras opciones.
config.example.toml a data/main/config.toml.authFile (o apiKey) y publicHostname. Todo lo demás es opcional.env.example a .env y establece tu zona horaria (TZ). Las credenciales de Postgres y otros ajustes de entorno también se pueden sobrescribir ahí. Establece siempre POSTGRES_PASSWORD con algo seguro — el valor por defecto es un marcador de posición débil y no debe usarse en producción.Después de que la aplicación arranque, abre /settings/config para editar config.toml en el navegador. La página está protegida por HTTP Basic Auth y muestra la configuración sin procesar, incluidos los secretos que contenga. Un guardado válido crea una única copia de seguridad <CONFIG_PATH>.bak, guarda el nuevo contenido y reinicia la aplicación; esto interrumpe cualquier turno del agente en curso.
plugin-runner, coder, signal-bridge y python-runner leen config.toml solo cuando arrancan. Los cambios que les afectan, como la contraseña, requieren reiniciar manualmente esos contenedores.
Stavrobot se puede apuntar a cualquier endpoint compatible con OpenAI (Ollama, LiteLLM, vLLM, etc.) o a un proxy personalizado compatible con Anthropic estableciendo baseUrl en config.toml. Consulta config.example.toml para los campos requeridos y ejemplos de configuración.
La aplicación soporta dos modos de autenticación: clave de API u OAuth.
apiKey en config.toml. No se necesita iniciar ni cerrar sesión.authFile en config.toml (una ruta donde se almacenarán las credenciales). La página de inicio de sesión funciona con cualquier proveedor de OAuth soportado por Pi.
<your-hostname>/login en un navegador. Sigue las indicaciones de la página, y las credenciales se guardan en el archivo de autenticación. Si la autenticación caduca mientras el bot está en ejecución, te envía un mensaje con la URL de inicio de sesión a través de tu plataforma de mensajería.authFile. El bot detectará la falta de credenciales en el siguiente mensaje y te pedirá que inicies sesión de nuevo.El contenedor coder es opcional (necesario solo para la función de autoprogramación). Usa Claude Code con autenticación por suscripción (OAuth), separada de la clave de API de la aplicación principal.
Los perfiles de Docker Compose están separados por comas, así que puedes combinarlos (p. ej. COMPOSE_PROFILES=signal,coder).
COMPOSE_PROFILES en tu archivo .env para incluir coder (p. ej. COMPOSE_PROFILES=coder, o COMPOSE_PROFILES=signal,coder si también usas Signal).docker compose --profile coder up --builddocker compose exec -u coder coder claude (te pedirá que inicies sesión si no lo has hecho).[coder].model en tu config con un alias de modelo de Claude Code (sonnet, opus o haiku).Signal requiere un número de teléfono separado — no el tuyo personal. Un SIM de prepago o un número VoIP sirve.