Нодовый редактор из кубиков. SnarkRoute бросает вызов закрытым AI-пайплайнам
Пока каждая AI-платформа строит собственный нодовый редактор и намертво запирает пользователя внутри, российский разработчик пошёл в другую сторону: выпустил открытый конструктор SnarkRoute, где воркфлоу собирается из переносимых блоков, а маршруты между моделями становятся самостоятельными, читаемыми документами - не привязанными ни к одному сервису.
Остров за островом: почему нодовые редакторы зашли в тупик
ComfyUI, n8n, внутренние пайплайны студий, обвязки вокруг Replicate и OpenRouter - все они, по сути, решают одну задачу. Только делают это в несовместимых форматах. Воркфлоу, собранный в одном инструменте, в другой не переезжает. Его сложно вскрыть, сложно воспроизвести, а пользователь оказывается прибит к конкретному интерфейсу вместо того, чтобы владеть логикой процесса. Сотни команд снова и снова изобретают одну и ту же коробочку с входами и выходами - и каждый раз заваривают её в собственный закрытый стандарт. Иордания - Алжир эфир
Именно в эту дыру целится SnarkRoute. Центральный объект здесь не модель и не редактор, а маршрут - читаемый документ воркфлоу с нодами, связями, параметрами, провенансом и метаданными об экономике запуска. Провайдерских секретов и зашитых файлов внутри нет. Такой файл можно переслать, ремикснуть и запустить на другой машине - и он не рассыплется.
Что такое Open Route Protocol и зачем нужен .orp
Под редактором лежит Open Route Protocol - открытая схема для описания AI-, model- и API-воркфлоу. Канонический формат файла - .orp, есть варианты .orp.json и .orp.yaml, а также человекочитаемый алиас .route. Внутри: инстансы нод, рёбра, параметры, ссылки на ассеты через AssetRef, поля автора, лицензии и долей выручки.
Ноды при этом пакуются в отдельный формат .snarknode, перетаскиваются в редактор drag-and-drop, складываются в библиотеку и собираются в составные блоки. Несколько нод можно свернуть в одну - и развернуть обратно. Переносимость работает на двух уровнях сразу: маршрут целиком и отдельный блок как самостоятельный кирпич.
Проект написан на TypeScript, монорепо на pnpm, фронт - Vite + React + React Flow, сервер на Fastify, тесты на Vitest. Архитектура local-first: ключи, запуски и ассеты остаются на машине пользователя, наружу маршрут обращается только при явном вызове внешнего провайдера. Так же, как команды болеют за своих на любом турнире вживую - можно смотреть, например, Иордания - Алжир эфир и параллельно гонять локальные пайплайны без утечки данных наружу.
Экономика в формате с первого дня
Поля под автора, лицензию, атрибуцию и доли выручки заложены в протокол с самого начала - пусть нулевыми и опциональными. Каждый запуск получает локальную сводку учёта, но с честным флагом paymentExecuted: false. Никаких платежей, никакого сеттлмента, никакого блокчейна в v0.1. Поля есть - рубильник опущен. Это сознательное решение: добить экономику потом, не сломав совместимость, практически невозможно.
Безопасность встроена в архитектуру, а не прикручена поверх. Никакого исполнения чужого произвольного JavaScript: ноды сообщества - декларативные манифесты с явными разрешениями. Маршрут не тянет файлы самостоятельно: AssetRef хранит ссылку, а хост сам решает, резолвить её или заблокировать. Секреты с маршрутом не уезжают вообще.
Что уже работает прямо сейчас
Публичная часть проекта - BoojumRoute Lab, рабочий блочный редактор маршрутов. Живой пример пайплайна: входное изображение поступает в Replicate Clarity Upscaler, затем уходит на превью и сохраняется локально. Ссылки от Replicate протухают, поэтому результат сразу скачивается в data/runs.
- Создание и запуск маршрутов, импорт и экспорт .orp
- DAG-движок с топологической сортировкой и ловлей циклов
- Установка .snarknode и drag-and-drop импорт нод
- Плейсхолдеры для недостающих нод - маршрут не разваливается при отсутствии блока
- Встроенные ноды: текст, файлы, картинки, видео, шаблоны, дебаг-логи, превью, вывод
- Model Gateway с provider-neutral адаптерами для Replicate, Gemini, OpenRouter
- Локальный ledger запусков с провенансом и предварительной оценкой стоимости
SnarkRoute пока в самом начале пути - но болт уже прикручен к настоящей машине. Это редкий случай, когда открытый протокол появляется не после того, как экосистема застыла, а до того, как она успела окончательно закрыться.