Tu dispositivo, tus datos, tu agente
Un asistente personal de IA que corre 100% en el dispositivo. Sin nube. Sin Python. Tus datos nunca salen de tu máquina.
El problema
Siri envía tu voz a Apple. Google Assistant envía tus consultas a Google. Alexa envía todo a Amazon. Cada asistente "inteligente" requiere un salto a la nube. Tu calendario, contactos, mensajes y ubicación salen del dispositivo.
¿Y si pudieras tener un asistente capaz que nunca envía ni un byte fuera de tu máquina?
La config
device_agent.toml define un asistente completo en el dispositivo con inferencia LLM local y acceso a todos tus datos de Apple mediante iMCP: todo en 82 líneas de TOML.
Inferencia LLM local
[agent] provider = "llama_cpp" model = "unsloth/Qwen3-VL-8B-Instruct-GGUF:UD-Q6_K_XL" assume_mutating = false tools = [ "create_task", "todowrite", "todoread", "question", "mdq", # All Apple data tools come from iMCP "iMCP.*", ]
"iMCP.*" es un wildcard que coincide con cada tool expuesta por el servidor MCP de iMCP. A medida que iMCP agrega servicios nuevos (Reminders, Notes, Shortcuts), el agente obtiene acceso automáticamente sin cambios de config.
Parámetros de modelo GPU
[agent.parameters] n_ctx = 160000 # 160K context window max_tokens = 8192 # Max response length top_p = 0.95 top_k = 20 temperature = 0.9 # Creative but grounded flash_attention = "enabled" # Faster inference
QueryMT autodetecta tu GPU (Metal en Apple Silicon, CUDA en NVIDIA, Vulkan en otros sistemas) y descarga la variante correcta de la imagen OCI. Sin config de drivers. Sin instalación del toolkit CUDA.
Compactación en tres capas para conversaciones largas
# Layer 1: Tool output truncation [agent.execution.tool_output] max_lines = 2000 max_bytes = 51200 # Layer 2: Pruning after every turn [agent.execution.pruning] protect_tokens = 40000 # Layer 3: AI summary on context overflow [agent.execution.compaction] auto = true
Las consultas de calendario y búsquedas de contactos devuelven datos estructurados. Pero las conversaciones largas con muchas llamadas a tools aun pueden llenar la ventana de contexto de 160K. El sistema de compactación en tres capas lo maneja automáticamente: trunca salidas grandes de tools, poda mensajes antiguos y resume cuando hace falta.
Servidor MCP: iMCP
# iMCP - local Apple data access [[mcp]] name = "iMCP" transport = "stdio" command = "/Applications/iMCP.app/Contents/MacOS/imcp-server"
Esto le indica a QueryMT que lance localmente el servidor MCP de iMCP. El agente se comunica con él por stdio: sin conexión de red involucrada. iMCP actúa como puente directo a las APIs nativas de Apple.
Arquitectura
Todo queda en el dispositivo. Ningún dato sale de tu máquina en ningún punto del pipeline:
El LLM corre localmente mediante llama.cpp. Las llamadas a tools van a iMCP por stdio. iMCP llama a las APIs locales de Apple. En ningún momento tus datos atraviesan una conexión de red. El agente funciona offline.
Interacción de ejemplo
Funciones clave
- 100% en el dispositivo — inferencia LLM local, acceso local a datos, sin nube
- Integración con iMCP — Calendar, Contacts, Messages, Maps, Weather vía APIs nativas
- Patrones wildcard de tools —
"iMCP.*"incluye automáticamente servicios nuevos - Autodetección de GPU — Metal/CUDA/Vulkan, sin config manual
- Funciona offline —
stdiocomo transporte, sin red necesaria - Compactación en tres capas — maneja conversaciones largas con muchas tools
Pruébalo tú mismo
# 1. Install iMCP brew install --cask mattt/tap/iMCP # Or download from https://iMCP.app/download # 2. Open iMCP.app and enable services (Calendar, Contacts, etc.) # 3. Run the agent cargo run --example qmtcode --features dashboard -- confs/device_agent.toml --dashboard # 4. Ask questions in the dashboard: # "What does my schedule look like today?" # "Do I have any messages from Sarah this week?" # "What's the weather like for my commute home?"