Пока каждый AI-инструмент строит собственный нодовый редактор - несовместимый, закрытый и намертво привязывающий пользователя к одному интерфейсу, - появился проект, который предлагает принципиально другой подход. SnarkRoute - это не очередной редактор, а конструктор для сборки редакторов, внутри которого ноды становятся переносимыми артефактами, а воркфлоу - читаемым документом.
Остров за островом: почему AI-инструменты не разговаривают друг с другом
ComfyUI, n8n, самопальные обвязки вокруг Replicate и Fal, внутренние пайплайны студий - все они решают одну и ту же задачу: соединить модели, апишки и данные в управляемую цепочку. Проблема в том, что каждый делает это в собственном, ни с чем не совместимом формате. Воркфлоу, собранный в одном месте, в другое не переезжает. Его трудно вскрыть, трудно воспроизвести, а пользователь оказывается заперт в конкретном интерфейсе - вместо того чтобы работать с логикой процесса напрямую. смотреть Турция - США на RUTUBE Спорт
Автор проекта описывает это как «сотни людей, раз за разом изобретающих одну и ту же коробочку с входами и выходами - и каждый заваривает её в свой несовместимый формат». SnarkRoute задуман именно как ответ на этот структурный тупик.
Что такое Open Route Protocol и зачем он нужен
В центре архитектуры - понятие маршрута (route): читаемый документ воркфлоу, содержащий ноды, связи, параметры, метаданные провенанса и экономики, ссылки на ассеты. Никаких провайдерских секретов внутри, никаких зашитых файлов. Маршрут можно переслать, ремикснуть, вскрыть и запустить - и он не рассыплется при переезде.
Под маршруты написан Open Route Protocol - схема с канонический форматом .orp (плюс .orp.json, .orp.yaml и человекочитаемый алиас .route). Поля под автора, лицензию, атрибуцию, доли и провенанс заложены с первого дня - пусть пока нулевыми и опциональными, но без возможности потом сломать совместимость при их добавлении.
Ноды при этом упакованы в формат .snarknode: их можно скачать, установить перетаскиванием, скинуть коллеге, собрать в составной блок - и свернуть цепочку обратно в одну ноду.
Что уже работает: первый публичный кусок
Рабочая реализация называется BoojumRoute Lab - локальный блочный редактор маршрутов, собранный на Vite, React и React Flow с Fastify под капотом. Проект local-first: ключи, запуски и ассеты остаются на машине пользователя, а наружу маршрут тянется только при явном вызове внешнего провайдера.
Провайдеры - Replicate, Gemini, OpenRouter и другие - подключаются через провайдер-нейтральный Model Gateway. Сам файл маршрута остаётся агностичным и сырых секретов не хранит. DAG-движок занимается топологической сортировкой, ловлей циклов и шаблонными ссылками между нодами. Все запуски пишутся в локальный ledger с провенансом и экономическими метаданными - но с честным флагом paymentExecuted: false: поля есть, реальных платежей нет.
- Создание и запуск маршрутов, импорт и экспорт .orp
- Схема Open Route Protocol v0.1 с парсингом и валидацией
- Установка .snarknode и drag-and-drop импорт нод
- Встроенные ноды: текст, файлы, изображения, видео, шаблоны, превью, вывод
- Asset System с библиотекой промптов (.prompt.md с YAML-фронтматтером)
- Локальный ledger запусков с провенансом
Безопасность как архитектурный принцип, а не заплатка
Переносимые ноды, которые можно слать друг другу, - это звучит ровно как «отличный способ сделать небезопасный npm, только для графов». Авторы осознают это и закрывают вопрос на уровне дизайна. Никакого выполнения чужого произвольного JavaScript: ноды сообщества - декларативные манифесты с явными permissions. Маршрут не тянет файлы сам - он хранит AssetRef, а хост уже решает, резолвить ссылку, верифицировать хеш или заблокировать. Секреты живут только на стороне хоста и никуда не уезжают.
Проект написан на TypeScript, покрыт тестами на Vitest, лицензирован под AGPL. Часть кода создавалась с помощью языковых моделей - в репозитории даже лежит Codex-скилл для сборки нод. Но, по словам автора, именно работа над проектом наглядно показала: стоит убрать протокол, схемы валидации и границы между слоями - и всё мгновенно превращается в кашу. Так что никаких «скачали чужой JS и помолились».