SnarkRoute: открытый протокол против зоопарка несовместимых AI-воркфлоу
Нодовые редакторы сейчас клепают все, кому не лень. ComfyUI, n8n, самопальные обвязки вокруг Replicate и Fal - каждый инструмент строит собственный остров, и воркфлоу с одного острова на другой не переплыть. Разработчик под ником, связанным с проектом SnarkRoute, решил не добавлять очередной редактор в коллекцию, а предложить кое-что другое: открытый переносимый формат, который делает ноды независимыми от любой конкретной программы.
Проблема, которую давно пора было назвать вслух
Сотни команд и одиночек раз за разом изобретают одну и ту же коробочку с входами и выходами. Каждый заваривает её в свой несовместимый формат. Воркфлоу нельзя воспроизвести на чужой машине, нельзя нормально вскрыть и посмотреть, что внутри, а автор намертво привязан к интерфейсу вместо самой логики процесса. Это системная беда всего AI-инструментария прямо сейчас - и никто особо не торопился её чинить. Тунис - Нидерланды 3 тур
Проект SnarkRoute появился как прямой ответ на этот тупик. Его публичная часть - BoojumRoute Lab, локальный блочный редактор маршрутов. Под ним лежит главное: Open Route Protocol, переносимый формат для описания AI-, model- и API-воркфлоу. Канонический файл имеет расширение .orp, есть также .orp.json, .orp.yaml и человекочитаемый алиас .route.
Маршрут как главный артефакт
Центральная идея - перенести фокус с модели и редактора на маршрут. Маршрут здесь - это читаемый документ: ноды, связи, параметры, провенанс, экономика запуска, ссылки на ассеты. Провайдерских секретов в нём нет. Его можно переслать, ремикснуть, запустить на другой машине - и он не рассыплется.
Ноды при этом пакуются в формат .snarknode, тащатся в редактор перетаскиванием, складываются в библиотеку и собираются в составные блоки. Несколько нод - цепочка. Цепочка при желании сворачивается обратно в одну ноду. Переносимость работает на двух уровнях: весь маршрут как документ и отдельная нода как автономный кирпич.
Стек - TypeScript-монорепо на pnpm, Vite + React + React Flow на фронте, Fastify на локальном сервере, тесты на Vitest. Архитектура local-first: ключи, запуски, ассеты и настройки остаются на машине пользователя, наружу маршрут лезет только по явному вызову внешнего провайдера. Кстати, в мире открытых стандартов и протоколов для передачи данных сейчас происходит много интересного - своего рода Тунис - Нидерланды 3 тур в области форматов: конкуренты на поле, правила одни, но стиль у каждого свой.
Безопасность и экономика - не на потом
Первый же вопрос, который возникает при словах «переносимые ноды, которые можно слать друг другу»: это очередная дыра, через которую прилетит что-то нехорошее? Разработчик отвечает на него архитектурно, а не обещаниями.
- Никакого исполнения произвольного чужого JavaScript - ноды сообщества это декларативные манифесты с явными разрешениями.
- Файлы и URL маршрут не тянет сам - только держит ссылку AssetRef, а хост решает, что с ней делать: резолвить, валидировать, блокировать.
- Секреты живут исключительно на хосте и никуда не уезжают.
- Hash-пиннинг ругается, если ассет подменили.
Экономические поля - автор, лицензия, доли, провенанс - заложены в формат с первого дня. Пусть нулевыми и выключенными, но они там есть. Платежи и сеттлменты не исполняются, флаг paymentExecuted честно стоит в false. Это принципиальная позиция: поля есть, рубильник опущен, совместимость не сломается, когда придёт время его поднять.
Проект распространяется под лицензией AGPL. Репозиторий включает Codex-скилл для сборки нод - чтобы любой мог сделать свои, не разбираясь в потрохах движка.