Odysseus¶
Workspace AI self-hosted. Chat con LLMs, agentes con herramientas, deep research, comparación de modelos, documentos, notas/tareas, calendario, email, memoria persistente. FastAPI + ChromaDB + SearXNG + ntfy. RAM ~1.5-2GB. http://localhost:7000
Rutas y configs¶
| Qué | Dónde |
|---|---|
| Compose | /opt/docker/odyssey/compose.yaml |
| Variables de entorno | /opt/docker/odyssey/.env |
| Datos (DB, uploads, memory) | /opt/docker/odyssey/data |
| Cache de modelos HF | /opt/docker/odyssey/data/huggingface |
| Paquetes Python (Cookbook) | /opt/docker/odyssey/data/local |
| SSH keys (Cookbook remote) | /opt/docker/odyssey/data/ssh |
| Logs | /opt/docker/odyssey/logs |
| Config SearXNG | /opt/docker/odyssey/config/searxng/settings.yml |
Contenedores: odyssey-odysseus-1, odyssey-chromadb-1, odyssey-searxng-1, odyssey-ntfy-1
Puerto: 7000 (solo Odysseus UI expuesto al host)
Subdominio: odyssey.matias7235.com.ar
Servicios bundled (red interna, sin port mapping al host)¶
| Servicio | Interno | Uso |
|---|---|---|
| ChromaDB | chromadb:8000 |
Vector store para memoria y embeddings |
| SearXNG | searxng:8080 |
Web search para chat y deep research |
| ntfy | ntfy:80 |
Push notifications para notas/tareas |
Comandos útiles¶
# Ver logs
docker compose -f /opt/docker/odyssey/compose.yaml logs -f odysseus
docker compose -f /opt/docker/odyssey/compose.yaml logs -f chromadb
# Reiniciar
docker compose -f /opt/docker/odyssey/compose.yaml restart odysseus
# Recrear todo el stack
cd /opt/docker/odyssey && docker compose down && docker compose up -d
# Verificar containers activos
docker compose -f /opt/docker/odyssey/compose.yaml ps
# Contraseña temporal del admin (primer boot)
docker compose -f /opt/docker/odyssey/compose.yaml logs odysseus | grep -i password
# Pull + rebuild + up (actualizar)
cd /opt/docker/odyssey && docker compose pull && docker compose up -d --build
Primer setup¶
- Levantar el stack:
docker compose up -d --build - Ver la contraseña temporal:
docker compose logs odysseus | grep -i password - Entrar a
odyssey.matias7235.com.ar, loguearse conadminy la contraseña temporal - Cambiar contraseña en Settings dentro de la app
- Configurar modelos LLM en Settings (Ollama, OpenAI, OpenRouter, etc.)
Variables de entorno (.env)¶
Opcionales (agregar según necesidad):
Features principales¶
- Chat: conversar con cualquier modelo local o API (vLLM, llama.cpp, Ollama, OpenRouter, OpenAI)
- Agent: hand tools y deja que resuelva solo (MCP, web, files, shell, skills, memoria)
- Cookbook: escanea hardware, recomienda modelos, descarga y sirve con un click
- Deep Research: recopila, lee y sintetiza fuentes en un reporte visual
- Compare: comparar modelos lado a lado, blind test sin bias
- Documents: editor multi-tab con asistencia de AI
- Memory/Skills: memoria persistente con ChromaDB, el agente evoluciona
- Email: IMAP/SMTP con triage de AI (urgencia, auto-tag, auto-reply)
- Notes & Tasks: notas con reminders, todo list, cron tasks
- Calendar: CalDAV sync (Radicale, Nextcloud, Apple)
- Mobile: PWA, responsive, touch gestures
GPU¶
El compose viene configurado para CPU. Si se quiere GPU:
# NVIDIA
echo 'COMPOSE_FILE=docker-compose.yml:docker/gpu.nvidia.yml' >> /opt/docker/odyssey/.env
# AMD ROCm
echo 'COMPOSE_FILE=docker-compose.yml:docker/gpu.amd.yml' >> /opt/docker/odyssey/.env
echo 'RENDER_GID=992' >> /opt/docker/odyssey/.env
La Vega 7 del Ryzen 5 4600G no es compatible con CUDA. ROCm podría funcionar pero con limitaciones. Para uso local, Ollama con CPU es la opción más simple.
Notas de seguridad¶
AUTH_ENABLED=truesiempre — Odysseus tiene shell access, file uploads, API tokens- Acceso solo vía Caddy HTTPS (no exponer directo a internet)
- Revisar
data/auth.jsondespués del primer boot: deshabilitar signup abierto, solo admin propio - Usuarios non-admin no tienen shell/Python/file read/write por defecto
- Si se habilitan API tokens o webhooks, crear tokens separados por integración