Модульная платформа для запуска 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.