O seu dispositivo, os seus dados, o seu agente
Um assistente pessoal de IA que corre 100% no dispositivo. Sem nuvem. Sem Python. Os seus dados nunca saem da sua máquina.
O problema
A Siri envia a sua voz para a Apple. Google Assistant envia as suas consultas para o Google. Alexa envia tudo para a Amazon. Todos os assistentes "inteligentes" exigem um salto para a nuvem. O seu calendário, contactos, mensagens e localização saem do dispositivo.
E se pudesse ter um assistente capaz que nunca envie nem um byte para fora da sua máquina?
A config
device_agent.toml define um assistente completo no dispositivo com inferência LLM local e acesso a todos os seus dados da Apple via iMCP: tudo em 82 linhas de TOML.
Inferência 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.*" é um wildcard que corresponde a cada tool exposta pelo servidor MCP do iMCP. À medida que o iMCP adiciona novos serviços (Reminders, Notes, Shortcuts), o agente obtém acesso automaticamente sem mudanças 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 a sua GPU (Metal em Apple Silicon, CUDA em NVIDIA, Vulkan em outros sistemas) e descarrega a variante correta da imagem OCI. Sem config de drivers. Sem instalação do toolkit CUDA.
Compactação em três camadas para conversas longas
# 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
Consultas de calendário e pesquisas de contactos devolvem dados estruturados. Mas conversas longas com muitas chamadas de tools ainda podem preencher a janela de contexto de 160K. O sistema de compactação em três camadas lida com isso automaticamente: trunca saídas grandes de tools, poda mensagens antigas e resume quando necessário.
Servidor MCP: iMCP
# iMCP - local Apple data access [[mcp]] name = "iMCP" transport = "stdio" command = "/Applications/iMCP.app/Contents/MacOS/imcp-server"
Isso indica ao QueryMT que inicie localmente o servidor MCP do iMCP. O agente se comunica com ele por stdio: sem ligação de rede envolvida. O iMCP atua como ponte direta para as APIs nativas da Apple.
Arquitetura
Tudo fica no dispositivo. Nenhum dado sai da sua máquina em nenhum ponto do pipeline:
O LLM corre localmente via llama.cpp. As chamadas de tools vão para o iMCP por stdio. O iMCP chama as APIs locais da Apple. Em nenhum momento os seus dados atravessam uma ligação de rede. O agente funciona offline.
Interação de exemplo
Funcionalidades-chave
- 100% no dispositivo — inferência LLM local, acesso local a dados, sem nuvem
- Integração com iMCP — Calendar, Contacts, Messages, Maps, Weather via APIs nativas
- Padrões wildcard de tools —
"iMCP.*"inclui automaticamente novos serviços - Autodeteção de GPU — Metal/CUDA/Vulkan, sem config manual
- Funciona offline —
stdiocomo transporte, sem rede necessária - Compactação em três camadas — lida com conversas longas com muitas tools
Experimente
# 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?"