Ваше устройство, ваши данные, ваш агент
Персональный AI-ассистент, который работает на 100% на устройстве. Без облака. Без Python. Ваши данные не покидают машину.
Проблема
Siri отправляет ваш голос в Apple. Google Assistant отправляет ваши запросы в Google. Alexa отправляет все в Amazon. Каждый "умный" ассистент требует прыжка в облако. Ваш календарь, контакты, сообщения и данные о местоположении покидают устройство.
Что, если бы у вас был мощный ассистент, который никогда не отправляет ни одного байта за пределы вашей машины?
Конфиг
device_agent.toml описывает полноценного on-device ассистента с локальным LLM inference и доступом ко всем вашим данным Apple через iMCP - и все это в 82 строках TOML.
Локальный LLM inference
[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", # Все инструменты данных Apple приходят из iMCP "iMCP.*", ]
"iMCP.*" - это wildcard, который совпадает с каждым инструментом, который экспортирует iMCP MCP server. Когда в iMCP появляются новые сервисы (Reminders, Notes, Shortcuts), агент автоматически получает к ним доступ без изменений в конфиге.
Параметры GPU-модели
[agent.parameters] n_ctx = 160000 # Контекстное окно 160K max_tokens = 8192 # Макс. длина ответа top_p = 0.95 top_k = 20 temperature = 0.9 # Креативно, но приземленно flash_attention = "enabled" # Более быстрый inference
QueryMT автоматически определяет ваш GPU (Metal на Apple Silicon, CUDA на NVIDIA, Vulkan в остальных случаях) и загружает правильный OCI-вариант образа. Без настройки драйверов. Без установки CUDA toolkit.
Трехслойное сжатие для долгих разговоров
# Слой 1: обрезка вывода инструментов [agent.execution.tool_output] max_lines = 2000 max_bytes = 51200 # Слой 2: pruning после каждого хода [agent.execution.pruning] protect_tokens = 40000 # Слой 3: AI summary при переполнении контекста [agent.execution.compaction] auto = true
Запросы к календарю и поиск по контактам возвращают структурированные данные. Но длинные разговоры с большим количеством вызовов инструментов все равно могут заполнить окно в 160K. Трехслойная система сжатия обрабатывает это автоматически: обрезает большие выводы инструментов, отбрасывает старые сообщения и суммирует разговор, когда это нужно.
MCP server: iMCP
# iMCP - локальный доступ к данным Apple [[mcp]] name = "iMCP" transport = "stdio" command = "/Applications/iMCP.app/Contents/MacOS/imcp-server"
Это указывает QueryMT локально запускать iMCP MCP server. Агент общается с ним через stdio - без какого-либо сетевого соединения. iMCP напрямую мостит к нативным API Apple.
Архитектура
Все остается на устройстве. Данные не покидают вашу машину ни на одном этапе пайплайна:
LLM работает локально через llama.cpp. Вызовы инструментов идут к iMCP через stdio. iMCP вызывает локальные API Apple. Ваши данные ни в один момент не проходят через сетевое соединение. Агент работает офлайн.
Пример взаимодействия
Ключевые возможности
- 100% on-device — локальный LLM inference, локальный доступ к данным, без облака
- Интеграция с iMCP — Calendar, Contacts, Messages, Maps, Weather через нативные API
- Wildcard-паттерны инструментов —
"iMCP.*"автоматически подхватывает новые сервисы - Автоопределение GPU — Metal/CUDA/Vulkan, без ручной настройки конфига
- Работает офлайн —
stdioтранспорт, сеть не нужна - Трехслойное сжатие — выдерживает длинные разговоры с большим количеством инструментов
Попробуйте сами
# 1. Установите iMCP brew install --cask mattt/tap/iMCP # Или загрузите с https://iMCP.app/download # 2. Откройте iMCP.app и включите сервисы (Calendar, Contacts и т.д.) # 3. Запустите агента cargo run --example qmtcode --features dashboard -- confs/device_agent.toml --dashboard # 4. Задавайте вопрос в 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?"