Российский разработчик запустил открытый проект SnarkRoute - конструктор нодовых редакторов с переносимым форматом воркфлоу, который должен сломать один из самых стойких паттернов AI-инструментария: каждый пишет свой редактор, и ни один с другим не разговаривает.
Остров за островом: как AI-инструменты замуровали себя в несовместимость
ComfyUI, n8n, внутренние пайплайны студий, самодельные обвязки вокруг Replicate и Fal - все они в какой-то момент обзаводятся нодовым редактором. Задача у всех одна: соединить модели, API и данные в граф. Результат - у каждого свой несовместимый формат, свой закрытый остров. Воркфлоу, собранный в одном инструменте, в другой не переедет. Его трудно воспроизвести, трудно вскрыть. Пользователь намертво прибит к интерфейсу, а не к логике процесса. ДР Конго - Узбекистан смотреть онлайн
Именно в эту дыру и целится SnarkRoute. Центральная идея - сделать маршрут, а не редактор, главным артефактом. Маршрут здесь это читаемый документ: ноды, связи, параметры, провенанс, экономика запуска. Его можно переслать, ремикснуть, запустить в другом окружении - и он не рассыплется.
Open Route Protocol: от салфетки до рабочей схемы
Формат называется Open Route Protocol. Канонический файл получил расширение .orp, есть также .orp.json, .orp.yaml и человекочитаемый псевдоним .route. Внутри - инстансы нод, рёбра, параметры, ссылки на ассеты через AssetRef, поля автора, лицензии, атрибуции и экономики. Последние пока работают как метаданные и локальный учёт: платёжный рубильник намеренно опущен, честно и без иллюзий.
Ноды при этом пакуются в .snarknode, тащатся в редактор перетаскиванием, складываются в библиотеку и собираются в составные блоки. Цепочку нод можно свернуть обратно в одну ноду. Переносимость работает на двух уровнях сразу - маршрут как документ и нода как отдельный кирпич.
Стек - TypeScript-монорепо на pnpm, Vite плюс React и React Flow на фронте, Fastify на локальном сервере, тесты на Vitest. Архитектура local-first: ключи, запуски и ассеты остаются на машине пользователя, наружу маршрут тянется только при явном обращении к внешнему провайдеру. Провайдеры подключаются через provider-neutral Model Gateway и сырых секретов в файл маршрута не пишут.
Безопасность заложена в архитектуру, а не добита потом
Первый вопрос, который возникает при словах «переносимые ноды, которые можно слать друг другу» - это ведь новый небезопасный npm, только для графов. Ответ в SnarkRoute закладывался с самого начала, а не прикручивался на финише.
- Никакого исполнения произвольного JavaScript из сторонних нод - только декларативные манифесты с явными permissions.
- AssetRef вместо прямой загрузки: маршрут держит ссылку, хост сам решает, что с ней делать.
- Секреты живут только на хосте и не уезжают ни с маршрутом, ни с бандлом.
- Hash-пиннинг сигнализирует о подмене ассета и помогает делать воспроизводимые запуски.
Публичный рабочий фрагмент проекта сейчас живёт как BoojumRoute Lab - локальный блочный редактор маршрутов. Уже работают: создание и запуск маршрутов, DAG-исполнитель с топологической сортировкой и ловлей циклов, импорт и экспорт .orp, библиотека промптов как первый пример Asset System, встроенные ноды для текста, файлов, картинок, видео и дебаг-логов. Живой пример - апскейл изображения через Replicate Clarity Upscaler с автоматическим сохранением результата локально, поскольку ссылки провайдера протухают.
Проект выходит под лицензией AGPL. Репозиторий включает Codex-скилл для сборки нод - чтобы любой мог сделать собственные блоки без погружения в кишки движка. Насколько идея переносимого протокола приживётся в сообществе - покажут следующие месяцы. Но болт в машину закручен.