Skip to content
forked from openclaw/openclaw

Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

License

Notifications You must be signed in to change notification settings

jeturing/Jarvis

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8,326 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 Jarvis — Personal AI Assistant

Your Personal AI Assistant Running on Your Own Devices

CI status GitHub release MIT License

📋 Tabla de Contenidos


¿Qué es Jarvis?

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.

Beneficios Clave

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


Características Principales

🔐 Seguridad y Privacidad

  • 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

💬 Multi-Canal

  • 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

🛠️ Herramientas Poderosas

  • 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

🤖 IA Avanzada

  • 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

Arquitectura del Sistema

┌─────────────────────────────────────────────────────────────────┐
│                    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


Diagrama de Uso

Flujo de Mensaje Completo

┌─────────────────────────────────────────────────────────────────┐
│  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


Instalación Rápida

Requisitos Previos

  • Node.js ≥ 22.12.0
  • npm, pnpm o bun
  • macOS, Linux o Windows (WSL2)

Instalación con npm

# Instalar globalmente
npm install -g moltbot@latest

# Ejecutar asistente de configuración
moltbot onboard --install-daemon

Instalación desde Código Fuente

# 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

Instalación con Docker

# Usando Docker Compose
docker-compose up -d

📖 Profundizar: Ver Guía de Instalación Completa


Configuración

Estructura de Configuración

~/.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

Archivo de Configuración Principal

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
  - workspace2

Variables de Entorno

Crea 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

Diagrama de Configuración

┌────────────────────────────────────────────────────────────┐
│                  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


Uso Básico

Iniciar el Gateway

# Modo daemon (recomendado)
moltbot daemon install
moltbot daemon start
moltbot daemon status

# Modo manual (desarrollo)
moltbot gateway --port 18789 --verbose

Enviar Mensajes

# 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"

Interactuar con el Agente

# 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

Gestionar Canales

# 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

Gestionar Emparejamiento

# 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

Gestionar Modelos

# 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

Gestionar Skills

# 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

Diagnóstico

# 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


Canales Soportados

Canales Integrados

Canal Biblioteca Estado Documentación
WhatsApp @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

Canales de Extensión

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

Características de Canal

  • 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


Documentación Completa

📚 Documentación Principal

🔧 Configuración y Administración

💡 Conceptos y Guías

🚀 Inicio Rápido

📖 Referencia


Desarrollo

Configuración del Entorno de Desarrollo

# 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

Scripts de Desarrollo

# 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

Estructura del Proyecto

/
├── 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


Contribuir

¡Las contribuciones son bienvenidas! Por favor lee CONTRIBUTING.md para detalles sobre nuestro código de conducta y el proceso para enviar pull requests.

Cómo Contribuir

  1. Fork el repositorio
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Áreas de Contribución

  • 🐛 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

Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para detalles.


Soporte

¿Necesitas ayuda? Aquí tienes algunas opciones:


Agradecimientos

Gracias a todos los contribuidores que han ayudado a hacer este proyecto posible.


Seguridad

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

About

Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 82.6%
  • Swift 13.4%
  • Kotlin 1.9%
  • Shell 0.8%
  • CSS 0.5%
  • JavaScript 0.4%
  • Other 0.4%