Разработчик выпустил открытый конструктор нодовых редакторов с переносимым форматом маршрутов
Пока каждый уважающий себя AI-инструмент обзаводится собственным нодовым редактором, один разработчик решил пойти против течения - и вместо очередного закрытого острова собрал открытый конструктор, где сами ноды становятся переносимыми артефактами. Проект называется SnarkRoute, и его первый публичный кусок уже работает.
Что не так с нынешней экосистемой
ComfyUI, n8n, самопальные обвязки вокруг Replicate и Fal, внутренние пайплайны студий - все они в какой-то момент приходят к одному: рисуют коробочку с входами и выходами. Задача одна и та же. Результат - несовместимые форматы, которые не переезжают между инструментами. Воркфлоу, собранный в одной среде, в другой разваливается или вовсе не открывается. Швейцария - Канада эфир
Именно эту дыру и затыкает SnarkRoute. Центральная идея проекта - не модель и не интерфейс редактора, а маршрут: читаемый документ воркфлоу с нодами, связями, параметрами, провенансом и экономикой. Без провайдерских секретов, без зашитых внешних файлов. Документ, который можно переслать, вскрыть, ремикснуть и запустить - и он не рассыплется при переезде.
Как устроен проект
Рабочая витрина SnarkRoute - BoojumRoute Lab, локальный блочный редактор маршрутов на Vite, React и React Flow. Под ним живёт главное: Open Route Protocol (ORP) - переносимый формат описания AI-, model- и API-воркфлоу. Канонический файл получает расширение .orp, есть также .orp.json, .orp.yaml и человекочитаемый алиас .route.
Ноды пакуются в формат .snarknode - их можно скачать, бросить другому, сложить в библиотеку или собрать из нескольких цепочку, а потом свернуть обратно в одну. Провайдеры подключаются через провайдер-нейтральный Model Gateway: нода вызывает зарегистрированный адаптер, а сам маршрут сырых секретов не хранит вовсе. Гейтвей умеет прикидывать стоимость заранее - но если данных нет, честно пишет Unknown, а не выдумывает цифру.
Всё это работает на принципе local-first: ключи, запуски, ассеты и настройки остаются на машине пользователя. Наружу маршрут лезет только тогда, когда сам пользователь позвал внешнего провайдера.
Безопасность заложена в архитектуру
Переносимые ноды, которые можно слать друг другу, - это звучит ровно как новый небезопасный npm, только для графов. Разработчик очевидно думал об этом заранее. Никакого произвольного JavaScript от сообщества: ноды - это декларативные манифесты с явными разрешениями. Файлы не тянутся напрямую, маршрут держит ссылку AssetRef, а хост сам решает, резолвить её, валидировать по схеме или заблокировать. Hash-пиннинг ругается, если ассет подменили.
Поля для авторства, лицензий, долей и провенанса зашиты в формат с первого дня - пусть нулевыми и опциональными, но они есть. Экономический рубильник пока опущен: v0.1 ведёт только локальный учёт, никаких платежей и сеттлментов. Архитектура сделана так, чтобы их можно было подключить потом без слома совместимости.
Что уже работает
- Блочный редактор BoojumRoute Lab - создание и запуск маршрутов в браузере
- Схема Open Route Protocol v0.1: парсинг, валидация, поддержка YAML и JSON
- DAG-исполнитель с топологической сортировкой, ловлей циклов и логами
- Drag-and-drop импорт и установка .snarknode, библиотека нод
- Плейсхолдеры на месте отсутствующих нод - маршрут не разваливается
- Импорт и экспорт .orp, локальный ledger запусков с провенансом
- Встроенные ноды: текст, файлы, изображения, видео, шаблоны, превью, вывод
Живой пример - апскейл картинки через Replicate Clarity Upscaler: результат сразу качается локально, потому что Replicate отдаёт ссылки, которые протухают. Мелкая деталь - но показательная: проект строится вокруг воспроизводимости, а не красивого демо. Репозиторий открыт, лицензия AGPL, внутри лежит даже Codex-скилл для сборки собственных нод - чтобы любой мог добавить свои кирпичи в общую стену, а не варить очередной несовместимый формат в одиночку.