Your Personal AI Assistant Running on Your Own Devices
- ¿Qué es Jarvis?
- Características Principales
- Arquitectura del Sistema
- Diagrama de Uso
- Instalación Rápida
- Configuración
- Uso Básico
- Canales Soportados
- Documentación Completa
- Desarrollo
- Contribuir
Jarvis es un asistente personal de IA que se ejecuta en tus propios dispositivos. Es una plataforma local-first, auto-hospedada y diseñada para control de usuario único.
✅ Privacidad Total — Todo se ejecuta localmente, tus datos nunca salen de tu control
✅ Multi-Canal — Conecta con WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Teams y más
✅ Multi-Plataforma — Funciona en macOS, iOS, Android, Linux y Windows (WSL2)
✅ Extensible — Sistema robusto de plugins para añadir funcionalidad
✅ Siempre Activo — Daemon persistente vía systemd/launchd
✅ Capacidades de Voz — Voice Wake y Talk Mode en macOS/iOS/Android
✅ Canvas Visual — Espacio de trabajo visual controlado por el agente
- Local-First: Todos tus datos permanecen en tu dispositivo
- Sin Servidor Central: No hay dependencia de servicios de terceros
- Emparejamiento Seguro: Sistema de códigos para autorización DM
- Lista de Permitidos: Control granular de quién puede interactuar
- Mensajería Unificada: Una interfaz para todos tus canales de chat
- 13+ Canales Integrados: WhatsApp, Telegram, Discord, Slack, Signal, y más
- Enrutamiento Inteligente: Mensajes dirigidos al agente correcto
- Respuestas Contextuales: Mantiene contexto en conversaciones grupales
- Browser Tool: Automatización web con Playwright
- Canvas Tool: Espacio de trabajo visual con A2UI
- Image Tool: Análisis y generación de imágenes
- Bash Tool: Ejecución de comandos del sistema
- Cron Tool: Tareas programadas
- Memory Tool: Almacenamiento y recuperación de contexto
- Múltiples Modelos: Claude, GPT, Gemini, Bedrock, Ollama (local)
- Failover Automático: Rotación automática si un modelo falla
- Streaming de Herramientas: Ejecución de herramientas en tiempo real
- Multi-Agente: Agentes aislados por workspace/canal
┌─────────────────────────────────────────────────────────────────┐
│ Interfaces de Usuario │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────────┐ │
│ │ macOS │ │ iOS │ │ Android │ │ CLI / Web UI │ │
│ │ App │ │ App │ │ App │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ WebSocket / HTTP
↓
┌─────────────────────────────────────────────────────────────────┐
│ Gateway (Servidor) │
│ • Gestión de sesiones y enrutamiento de mensajes │
│ • Catálogo de modelos IA y autenticación │
│ • Trabajos programados (cron) y webhooks │
│ • Herramienta de navegador compartida │
└─────────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────────┐
│ Runtime de Agente (Pi Agent) │
│ • Ejecución de modelos IA (Claude, GPT, etc.) │
│ • Streaming de herramientas en tiempo real │
│ • Gestión de contexto de sesión │
│ • Failover automático de modelos │
└─────────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────────┐
│ Capa Multi-Canal │
│ WhatsApp │ Telegram │ Signal │ Discord │ Slack │ iMessage │
│ Teams │ Matrix │ Zalo │ BlueBubbles │ LINE │ Voice Call │
└─────────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────────┐
│ Servicios Externos (IA) │
│ Anthropic Claude │ OpenAI GPT │ Google Gemini │ AWS Bedrock │
│ Ollama (Local) │ Otros proveedores │
└─────────────────────────────────────────────────────────────────┘
📖 Profundizar: Ver ARCHITECTURE.md para detalles completos de arquitectura
┌─────────────────────────────────────────────────────────────────┐
│ 1. Usuario envía mensaje desde canal (WhatsApp, Telegram, etc.)│
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 2. Canal recibe mensaje y lo normaliza │
│ • Extrae texto, medios, contexto de respuesta │
│ • Añade metadata del canal │
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 3. Verificación de seguridad │
│ • Verifica lista de permitidos │
│ • Valida emparejamiento para DMs │
│ • Comprueba permisos de grupo │
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 4. Gateway enruta mensaje │
│ • Determina sesión apropiada │
│ • Verifica modo de activación (mention/reply/always) │
│ • Encola o ejecuta inmediatamente │
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 5. Agente procesa mensaje │
│ • Carga contexto de sesión │
│ • Ejecuta modelo IA con herramientas │
│ • Stream de llamadas y resultados de herramientas │
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 6. Ejecución de herramientas (si es necesario) │
│ • Browser (automatización web) │
│ • Bash (ejecutar comandos) │
│ • Canvas (workspace visual) │
│ • Memory (recuperar contexto) │
│ • Otras herramientas personalizadas │
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 7. Agente genera respuesta │
│ • Basada en resultados de herramientas │
│ • Aplica modo de thinking (low/high/always) │
│ • Formatea para canal destino │
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 8. Respuesta enviada de vuelta │
│ • Formatea para protocolo específico del canal │
│ • Fragmenta mensajes largos si es necesario │
│ • Añade indicadores de escritura/reacciones │
└───────────────────────┬─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 9. Usuario recibe respuesta en su canal │
└─────────────────────────────────────────────────────────────────┘
📖 Profundizar: Ver Flujo de Datos en documentación de arquitectura
- Node.js ≥ 22.12.0
- npm, pnpm o bun
- macOS, Linux o Windows (WSL2)
# Instalar globalmente
npm install -g moltbot@latest
# Ejecutar asistente de configuración
moltbot onboard --install-daemon# Clonar repositorio
git clone https://github.com/jeturing/Jarvis.git
cd Jarvis
# Instalar dependencias
pnpm install
# Construir proyecto
pnpm ui:build
pnpm build
# Ejecutar asistente de configuración
pnpm moltbot onboard --install-daemon# Usando Docker Compose
docker-compose up -d📖 Profundizar: Ver Guía de Instalación Completa
~/.clawdbot/
├── config/
│ ├── .moltbot.yaml # Configuración principal
│ ├── models.json # Perfiles de modelos IA
│ └── skills/ # Configuraciones de skills
├── credentials/
│ ├── anthropic.json # Tokens OAuth
│ ├── openai.json
│ └── channels/ # Credenciales de canales
├── sessions/
│ ├── main/ # Datos de sesión principal
│ └── groups/ # Sesiones de grupos
└── logs/
├── gateway.log # Logs del gateway
└── agent.log # Logs del agente
Edita ~/.clawdbot/config/.moltbot.yaml:
# ========================================
# Configuración del Gateway
# ========================================
gateway:
mode: local # 'local' o 'remote'
port: 18789 # Puerto del servidor
bind: loopback # 'loopback' o 'all'
verbose: true # Logging detallado
# ========================================
# Configuración de Agentes
# ========================================
agents:
default:
model: claude-4.5-sonnet # Modelo IA por defecto
thinking: high # Nivel de thinking (low/high/always)
temperature: 0.7 # Temperatura del modelo
max_tokens: 8192 # Tokens máximos
# ========================================
# Configuración de Canales
# ========================================
channels:
# WhatsApp
whatsapp:
enabled: true
pairing: code # Método de emparejamiento
allowlist:
- "+1234567890" # Números permitidos
# Telegram
telegram:
enabled: true
bot_token: "${TELEGRAM_BOT_TOKEN}"
# Discord
discord:
enabled: true
bot_token: "${DISCORD_BOT_TOKEN}"
# Signal
signal:
enabled: true
phone: "+1234567890"
# Slack
slack:
enabled: true
bot_token: "${SLACK_BOT_TOKEN}"
# ========================================
# Configuración de Herramientas
# ========================================
tools:
browser:
enabled: true
headless: true # Navegador sin interfaz
timeout: 30000 # Timeout en ms
canvas:
enabled: true
port: 8080 # Puerto Canvas
bash:
enabled: true
timeout: 60000 # Timeout comandos
memory:
enabled: true
max_size: 1000 # Entradas máximas
# ========================================
# Configuración de Sandbox (Opcional)
# ========================================
sandbox:
enabled: false
docker_image: "jarvis/sandbox"
# ========================================
# Configuración de Plugins
# ========================================
plugins:
- name: matrix
enabled: true
config:
homeserver: "https://matrix.org"
- name: voice-call
enabled: false
config:
provider: "twilio"
# ========================================
# Configuración de Skills
# ========================================
skills:
- workspace1
- workspace2Crea un archivo .env en la raíz del proyecto:
# ========================================
# Tokens de API de IA
# ========================================
ANTHROPIC_API_KEY=sk-ant-api03-...
OPENAI_API_KEY=sk-...
# ========================================
# Tokens de Canales
# ========================================
TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
DISCORD_BOT_TOKEN=MTk4...
SLACK_BOT_TOKEN=xoxb-...
# ========================================
# Configuración del Gateway
# ========================================
CLAWDBOT_GATEWAY_PORT=18789
CLAWDBOT_GATEWAY_BIND=loopback
# ========================================
# Configuración de Modo
# ========================================
CLAWDBOT_PROFILE=production # 'production' o 'dev'
CLAWDBOT_SKIP_CHANNELS=0
# ========================================
# Configuración de Depuración
# ========================================
CLAWDBOT_DEBUG=0
CLAWDBOT_VERBOSE=0┌────────────────────────────────────────────────────────────┐
│ Proceso de Configuración │
└────────────────────────────────────────────────────────────┘
1. INSTALACIÓN
│
├─→ Instalar paquete npm/pnpm
│
└─→ Ejecutar: moltbot onboard --install-daemon
2. CONFIGURACIÓN INTERACTIVA
│
├─→ Seleccionar modelos IA (Claude, GPT, etc.)
│ └─→ Añadir tokens API o OAuth
│
├─→ Configurar canales
│ ├─→ WhatsApp (emparejamiento QR)
│ ├─→ Telegram (bot token)
│ ├─→ Discord (bot token)
│ ├─→ Signal (phone number)
│ └─→ Otros canales
│
├─→ Configurar herramientas
│ ├─→ Browser (Playwright)
│ ├─→ Canvas (A2UI)
│ ├─→ Bash (comandos)
│ └─→ Memory (almacenamiento)
│
└─→ Configurar seguridad
├─→ Listas de permitidos
├─→ Políticas de emparejamiento DM
└─→ Permisos de grupo
3. VERIFICACIÓN
│
├─→ Ejecutar: moltbot doctor
│ └─→ Verifica configuración y detecta problemas
│
└─→ Ejecutar: moltbot channels status
└─→ Verifica estado de canales
4. INICIO DEL GATEWAY
│
├─→ Modo Daemon: moltbot daemon start
│ └─→ Gateway se ejecuta en segundo plano
│
└─→ Modo Manual: moltbot gateway --port 18789
└─→ Gateway se ejecuta en primer plano
5. EMPAREJAMIENTO DE CANALES
│
├─→ WhatsApp: Escanear código QR
│
├─→ Otros canales: Aprobar códigos de emparejamiento
│ └─→ Ejecutar: moltbot pairing approve <canal> <código>
│
└─→ Verificar conexiones
└─→ Ejecutar: moltbot channels status --probe
6. ¡LISTO!
└─→ Enviar mensaje de prueba
└─→ Ejecutar: moltbot agent --message "Hola Jarvis"
📖 Profundizar: Ver Guía de Configuración Completa
# Modo daemon (recomendado)
moltbot daemon install
moltbot daemon start
moltbot daemon status
# Modo manual (desarrollo)
moltbot gateway --port 18789 --verbose# Enviar mensaje a un contacto
moltbot message send --to +1234567890 --message "Hola desde Jarvis"
# Enviar mensaje a un grupo
moltbot message send --to group_id --message "Hola grupo"# Modo interactivo
moltbot agent --message "¿Cuál es el clima hoy?"
# Con modo de thinking alto
moltbot agent --message "Analiza este documento" --thinking high
# Ejecutar comando y devolver resultado al canal
moltbot agent --message "Lista archivos en /home" --reply-back telegram# Ver estado de todos los canales
moltbot channels status
# Ver estado con verificación de conexión
moltbot channels status --probe
# Ver estado de un canal específico
moltbot channels status whatsapp
# Reiniciar un canal
moltbot channels restart telegram# Listar solicitudes de emparejamiento pendientes
moltbot pairing list
# Aprobar un emparejamiento
moltbot pairing approve telegram ABC123
# Rechazar un emparejamiento
moltbot pairing reject whatsapp XYZ789
# Ver lista de permitidos
moltbot pairing allowlist# Listar modelos disponibles
moltbot models list
# Ver configuración de modelos
moltbot models config
# Probar un modelo
moltbot models test claude-4.5-sonnet
# Cambiar modelo por defecto
moltbot config set agents.default.model claude-4.5-sonnet# Listar skills disponibles
moltbot skills list
# Instalar un skill
moltbot skills install workspace1
# Actualizar skills
moltbot skills update
# Ver configuración de skills
moltbot skills config# Ejecutar diagnóstico completo
moltbot doctor
# Ver logs del gateway
moltbot logs gateway
# Ver logs del agente
moltbot logs agent
# Ver logs de un canal
moltbot logs channel telegram📖 Profundizar: Ver Comandos CLI
| Canal | Biblioteca | Estado | Documentación |
|---|---|---|---|
| @whiskeysockets/baileys | ✅ Estable | Ver docs | |
| Telegram | grammy | ✅ Estable | Ver docs |
| Signal | signal-cli | ✅ Estable | Ver docs |
| iMessage | imsg | ✅ Estable | Ver docs |
| Discord | discord.js | ✅ Estable | Ver docs |
| Slack | @slack/bolt | ✅ Estable | Ver docs |
| Google Chat | Chat API | ✅ Estable | Ver docs |
| Canal | Ubicación | Estado | Documentación |
|---|---|---|---|
| BlueBubbles | extensions/bluebubbles | ✅ Estable | Ver docs |
| Microsoft Teams | extensions/msteams | ✅ Estable | Ver docs |
| Matrix | extensions/matrix | ✅ Estable | Ver docs |
| Zalo | extensions/zalo | ✅ Estable | Ver docs |
| Zalo Personal | extensions/zalouser | ✅ Estable | Ver docs |
| Twitch | extensions/twitch | ✅ Estable | Ver docs |
| Mattermost | extensions/mattermost | ✅ Estable | Ver docs |
| LINE | extensions/line | ✅ Estable | Ver docs |
| Voice Call | extensions/voice-call | 🔶 Beta | Ver docs |
- ✅ Emparejamiento DM: Lista de permitidos basada en código
- ✅ Enrutamiento de grupo: Control de menciones
- ✅ Etiquetas de respuesta: Respuestas basadas en hilos
- ✅ Fragmentación de mensajes: Límites específicos por canal
- ✅ Reacciones: Reconocimientos
- ✅ Indicadores de escritura: Estado en tiempo real
- ✅ Redacción de medios: Capacidades de privacidad
📖 Profundizar: Ver Documentación de Canales
- README Español (Completo) - Documentación completa en español
- Arquitectura - Arquitectura técnica detallada del sistema
- Componentes - Descripción de componentes individuales (próximamente)
- Desarrollo - Guía para desarrolladores (próximamente)
- Plugin Development - Crear plugins personalizados (próximamente)
- API Reference - Referencia completa de API (próximamente)
- Deployment - Guías de despliegue (próximamente)
- Gateway: Ver docs/gateway/
- Canales: Ver docs/channels/
- Seguridad: Ver docs/security/
- CLI: Ver docs/cli/
- Modelos IA: Ver docs/concepts/
- Sesiones: Ver docs/concepts/
- Herramientas: Ver docs/tools/
- Plugins: Ver docs/plugins/
- Getting Started: Ver docs/start/
- Instalación: Ver docs/install/
- Plataformas: Ver docs/platforms/
- Testing: Ver docs/testing.md
- Environment: Ver docs/environment.md
- Debugging: Ver docs/debugging.md
# 1. Clonar repositorio
git clone https://github.com/jeturing/Jarvis.git
cd Jarvis
# 2. Instalar dependencias
pnpm install
# 3. Construir UI
pnpm ui:build
# 4. Construir proyecto
pnpm build
# 5. Ejecutar en modo desarrollo
pnpm gateway:watch # Auto-recarga en cambios# Desarrollo
pnpm dev # Ejecutar CLI en modo dev
pnpm gateway:watch # Gateway con auto-recarga
pnpm gateway:dev # Gateway dev sin canales
pnpm tui:dev # UI de terminal dev
# Build
pnpm build # Compilar TypeScript
pnpm ui:build # Construir UI web
pnpm canvas:a2ui:bundle # Empaquetar Canvas A2UI
# Testing
pnpm test # Ejecutar todos los tests
pnpm test:watch # Tests en modo watch
pnpm test:coverage # Tests con cobertura
pnpm test:e2e # Tests end-to-end
# Linting & Formatting
pnpm lint # Lint TypeScript
pnpm lint:fix # Fix problemas de lint
pnpm format # Verificar formato
pnpm format:fix # Fix formato
# Plataformas
pnpm ios:build # Construir app iOS
pnpm android:run # Ejecutar app Android
pnpm mac:package # Empaquetar app macOS/
├── src/ # Código fuente TypeScript
├── extensions/ # Plugins de canal y extensiones
├── apps/ # Aplicaciones nativas (macOS, iOS, Android)
├── docs/ # Documentación
├── skills/ # Paquetes de skills de workspace
├── scripts/ # Scripts de utilidad
├── test/ # Fixtures de test y helpers
└── ui/ # UI web (Control UI)
📖 Profundizar: Ver Estructura Completa
¡Las contribuciones son bienvenidas! Por favor lee CONTRIBUTING.md para detalles sobre nuestro código de conducta y el proceso para enviar pull requests.
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
- 🐛 Bug fixes: Reporta o arregla bugs
- ✨ Nuevas características: Propón o implementa nuevas features
- 📝 Documentación: Mejora la documentación
- 🔌 Plugins: Crea nuevos plugins de canal o herramientas
- 🧪 Tests: Añade o mejora tests
- 🌐 Traducciones: Traduce documentación a otros idiomas
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para detalles.
¿Necesitas ayuda? Aquí tienes algunas opciones:
- 📖 Documentación: Revisa la documentación completa
- 🐛 Issues: Reporta bugs en GitHub Issues
- 💬 Discusiones: Únete a GitHub Discussions
- 📧 Email: Contacta al equipo de desarrollo
Gracias a todos los contribuidores que han ayudado a hacer este proyecto posible.
Para reportar vulnerabilidades de seguridad, por favor lee SECURITY.md.
Hecho con ❤️ por la comunidad
Si encuentras útil este proyecto, considera darle una ⭐ en GitHub