Luminarys AI: платформа для AI-агентов с изолированными навыками и кластеризацией

Luminarys AI: платформа для AI-агентов с изолированными навыками и кластеризацией

Модульная платформа для запуска AI-агентов, где каждый навык работает в WebAssembly-песочнице, агенты масштабируются на кластер из разнородных машин, а навыки пишутся на Go, Rust или AssemblyScript.

Последние полгода мы работаем с AI-агентами в продакшене и сталкиваемся с типичными архитектурными ограничениями. Существующие инструменты либо предоставляют полный доступ к системе, либо требуют постоянного ручного подтверждения действий. Гранулярные конфигурации не решают проблему рантаймовой изоляции: навык всё равно может выйти за границы, если код содержит ошибки. Масштабирование на гетерогенные устройства — x86, ARM, IoT, edge — остаётся сложной задачей. А привязка к одному языку не позволяет использовать разные технологии под разные задачи.

Мы решили построить платформу с нуля. Так появилась Luminarys AI — архитектурное решение для безопасных, масштабируемых и мультиязычных AI-агентов.

Проблема первая: навык делает что хочет

В большинстве фреймворков навык — это функция с полным доступом к системе. Он может читать файлы, ходить по URL, выполнять команды. Защита сводится к ручному подтверждению каждого действия. Это мешает автономной работе: LLM комбинирует команды, пользователь не всегда понимает, что именно разрешает.

Наше решение: каждый навык компилируется в WebAssembly и запускается в изолированной песочнице. Он физически не может выйти за пределы разрешений, заданных в конфигурации. Доступ к HTTP — только по URL из белого списка. К файлам — только в указанных директориях. К командам — только из разрешённого набора, без пайпов и цепочек.

Это не проверка на уровне кода, а ограничение рантайма. Обойти его невозможно. Разрешения задаются один раз — и после этого система работает автономно.

Навык для мониторинга CPU видит только /sys/class/thermal. Навык для GPIO — только /sys/class/gpio. Навык для I2C — только i2cget. Каждый получает ровно тот доступ, который ему нужен — и не больше.

При загрузке платформа проверяет соответствие кода конфигурации. Если навык запрашивает недопустимый ресурс — он не запускается.

Проблема вторая: один язык для всех навыков

Некоторые задачи LLM решить не может: парсинг бинарных форматов, OCR, математические вычисления, анализ AST, ML-inference. Для них приходится создавать отдельные MCP-серверы — со своим процессом, деплоем, конфигурацией.

Мы предлагаем подход конструктора: каждая задача — это навык. Навыки устанавливаются из магазина или пишутся с нуля с помощью SDK. Один хост, один процесс, любое количество навыков на разных языках.

Навыки можно писать на Go, Rust и AssemblyScript. Поддержка C/C++ в планах.

  • AssemblyScript — компактные модули (~100 КБ), синтаксис, близкий к TypeScript. Идеален для HTTP, файловых операций, работы с текстом.
  • Rust — максимальная производительность и доступ к нативным библиотекам. Подходит для парсинга бинарных протоколов, ML-inference (ONNX), анализа AST через tree-sitter.
  • Go — богатая стандартная библиотека и возможность встраивать скриптовые движки (JavaScript, Python).

Разработчик пишет только бизнес-логику с аннотациями. Кодогенератор создаёт маршрутизацию, сериализацию и валидацию параметров.

Один хост одновременно загружает навыки на разных языках. Они работают рядом, вызывают друг друга, делят состояние.

Аннотации унифицированы: @skill:method, @skill:param, @skill:result. Инструмент lmsk парсит их и генерирует dispatch-код, описание для MCP и валидацию.

Для тех, кто использует AI-ассистентов: в каждом SDK есть файл AGENTS.md с полным описанием API. Передайте его ассистенту — и он напишет навык за вас. Мы проверяли — работает.

Проблема третья: один сервер, одна машина

Типичный AI-агент работает на одной машине. Но что делать, если нужно отлаживать на ARM, работать с edge-устройствами или управлять IoT-парком?

Наше решение — встроенная кластеризация. Master-нода принимает подключения, slave-ноды выполняют навыки. Навыки не знают, что работают в кластере — для них всё выглядит локально. Платформа сама маршрутизирует вызовы.

Примеры сценариев:

  • CI/CD: тесты на Linux-slave, сборка Windows-бинарника на Windows-slave, результаты — на master.
  • Работа с оборудованием: Raspberry Pi читает I2C-датчики, Jetson Nano обрабатывает видео, x86-сервер управляет контроллером — для агента это единый набор инструментов.
  • IoT-парк: master в облаке, десятки slave на edge-устройствах. Каждый предоставляет навыки для своего оборудования — GPIO, SPI, UART, USB. Агент видит всё как одну систему.
  • Мониторинг: навыки для sysfs, SMART, температуры CPU/GPU, состояния сети — каждый в своей песочнице с минимальными правами.
  • Гетерогенные архитектуры: x86, ARM, RISC-V, MIPS — slave на любой платформе, master объединяет всё в единое пространство навыков.

При отключении slave мастер мгновенно обновляет список доступных инструментов. При перезапуске slave автоматически переподключаются и регистрируют навыки.

Между нодами работает передача файлов через встроенный relay-сервер с аутентификацией, шифрованием и проверкой целостности.

Проблема четвёртая: одна модель на все задачи

GPT-4 хорошо генерирует текст, но для кода лучше подойдёт специализированная модель. Для SQL — модель, обученная на схемах БД. Для Rust — та, что знает borrow checker.

Наше решение (в разработке): мульти-LLM роутинг. Платформа автоматически выбирает модель по типу задачи, языку программирования и проекту. Навыки запрашивают «сгенерируй код» — а платформа решает, какую модель использовать.

Совместимость: MCP

Платформа поддерживает Model Context Protocol — открытый стандарт от Anthropic. Это значит:

  • Claude Desktop, Claude Code, Cursor, Qwen Code подключаются из коробки.
  • MCP Inspector доступен для отладки.
  • Любой MCP-совместимый клиент видит навыки как инструменты.
  • Поддержка всех транспортов: Streamable HTTP (/mcp), Legacy SSE (/sse), stdio.
  • Для Open WebUI и аналогов — OpenAPI-эндпоинт (/openapi.json).

Адаптеры не нужны: стандартный протокол, стандартные инструменты.

Агентский режим (в разработке)

Батчевое выполнение

Агент может вызывать несколько инструментов за один шаг:

  • Синхронный батч: «прочитай три файла и верни результат, когда все готовы». Платформа выполняет вызовы параллельно, собирает результаты и возвращает их пакетом.
  • Асинхронный батч: «запусти сборку на трёх нодах, мне не нужно ждать». Вызовы запускаются в фоне, агент продолжает работу. Результаты приходят по мере готовности.

Автономный режим

Платформа поддерживает callback-модель: навык регистрирует обработчик события — входящие данные, таймер, сигнал от оборудования. Платформа вызывает его при наступлении события.

Это позволяет строить агентов, которые:

  • Следят за оборудованием в реальном времени.
  • Реагируют на данные с датчиков.
  • Обрабатывают входящие сообщения (WebSocket, TCP, serial, MQTT).
  • Запускают цепочки действий при выполнении условий.

Навыки остаются в песочнице — callback не даёт им дополнительных прав.

Межнавыковое взаимодействие

Навык может вызывать другой — через оркестратор, с проверкой политик. Цепочки вызовов контролируются: ограничена глубина, применяются тайм-ауты, детектируются циклы.

Безопасность

Безопасность заложена в архитектуру, а не добавлена сверху. Каждый навык работает в WebAssembly-песочнице. Доступ к файлам, URL и shell-командам контролируется рантаймом. Пайпы, перенаправления и цепочки команд блокируются — даже если LLM попытается их сформировать. Сетевое взаимодействие поддерживает TLS и аутентификацию. В планах — подпись пакетов навыков для верификации автора при установке из магазина.

Текущее состояние и планы

Платформа в активной разработке, но уже используется для автоматизации реальных задач.

Готово:

  • Рантайм: WebAssembly-песочница, 30+ системных функций (файлы, HTTP, TCP, WebSocket, shell, архивы, системная информация, LLM-контекст).
  • MCP-сервер: поддержка Streamable HTTP, SSE, stdio.
  • Кластеризация через NATS.
  • Передача файлов между нодами.
  • Авторизация.
  • Сборка под Linux, Windows, macOS.
  • SDK на Go, Rust, AssemblyScript — опубликованы через стандартные менеджеры пакетов.
  • 15+ примеров навыков: от файловой системы и git до Python Engine, JavaScript Engine, Tree-sitter, Intent Classifier (ONNX).

В разработке:

  • Полноценный агентский цикл: батчевое выполнение, автономный режим, callback’и.
  • Мульти-LLM роутинг.
  • Магазин навыков с подписью и версионированием.
  • Интеграция с IDE через Agent Client Protocol.
  • Мульти-агентный режим с профилями доступа.
  • C/C++ SDK.

Попробовать

Доступен demo-кластер на Docker Compose: два узла (master + slave), 10 навыков, готовое задание для агента.

Подключите MCP-клиент (Claude Code, Cursor, Qwen CLI — конфиги в репозитории) и дайте агенту задание из task/task.md. Агент напишет Go-приложение на slave, соберёт его, протестирует, проверит эндпоинты с master и доставит архив на хост.

SDK, примеры и demo — на GitHub. Документация — на luminarys.ai.

Где мы это применяем

Платформа используется для задач, где LLM-агент работает с большими объёмами данных. Пример: парсинг корпоративной документации (PDF, docx), формирование технического задания, выполнение и тестирование в изолированном окружении (slave в Docker), сборка результатов и доставка на master. Каждый этап — отдельный навык в песочнице, на нужной ноде.

Архитектура универсальна. Подходит для:

  • Автоматизации разработки: агент пишет код, запускает тесты, управляет Git.
  • IoT: кластер на edge-устройствах.
  • Мониторинга: навыки для sysfs, SMART, температуры.
  • CI/CD: сборка на разных платформах.
  • Enterprise-автоматизации: оффлайн-режим, собственные LLM, контроль данных.

Если вам важны изоляция, масштабирование и мультиязычность — попробуйте. SDK открыт, demo запускается за минуту.

Мы решаем реальные проблемы разработчиков AI-агентов. Изоляция, мультиязычность, кластеризация — уже работают. Мульти-LLM роутинг, магазин навыков, агентский цикл — в разработке.

Проект на стадии разработки. SDK открыт, demo доступен. Будем рады обратной связи — пишите в комментариях или на contacts@luminarys.ai.

Читать оригинал