Разработчик форкнул Flowise после закрытия и выяснил, что код форкать нельзя

Flowise закрыли 29 июля 2026 года, но код под Apache 2.0 оказался не полностью открытым. Разработчик форкнул проект под именем Keelflow и выяснил, что 130 файлов корпоративной части под коммерческой лицензией нельзя распространять.

Главное
  • Flowise закрыли 29 июля 2026 года, репозиторий заархивировали 13 августа, поддержка закончилась 31 августа.
  • В папке enterprise 130 файлов и 13,4 тысячи строк на TypeScript — это пятая часть сервера, включая авторизацию и работу с пользователями.
  • Разработчик переписал историю через git filter-repo, удалив коммерческий код, и создал форк Keelflow на ~800 строк с сессиями и API-ключами.
Схема визуального конструктора Flowise с блоками модели, векторного хранилища и агента
Фото: Хабр: ИИ

Визуальный конструктор для LLM-приложений Flowise закрылся 29 июля 2026 года. В объявлении команда объяснила решение тем, что разработчики всё чаще доверяют сложные задачи агентам для программирования, а жёсткие low-code-процессы упираются в потолок. Репозиторий заархивировали 13 августа, поддержка закончилась 31 августа.

У проекта 55 тысяч звёзд на GitHub, 25 тысяч форков и почти 7 миллионов скачиваний Docker-образа. Его разворачивали у себя компании, которым нельзя отправлять данные в облачные конструкторы. В объявлении о закрытии авторы прямо написали: код под Apache 2.0 ваш, форкайте.

Ловушка в лицензии

Разработчик решил продолжить проект под именем Keelflow и первым делом открыл лицензию. Она начинается не с текста Apache, а с преамбулы: содержимое папки packages/server/src/enterprise и файлы с явным уведомлением об авторских правах, например IdentityManager.ts, лицензированы по коммерческой лицензии FlowiseAI.

По этой лицензии использовать код в продакшене можно только с подпиской, модифицировать разрешено, но все права на изменения принадлежат FlowiseAI, а копировать, публиковать и распространять запрещено. Разрешено лишь копировать и менять код для разработки и тестирования.

Проблема в том, что именно лежит в enterprise. Разработчик посчитал: 130 файлов, 13,4 тысячи строк на TypeScript — пятая часть сервера. И 64 файла открытой части импортируют эту папку. Вход в систему, JWT в cookie, сущности пользователя, организации и рабочего пространства, проверка прав на каждом маршруте, 48 миграций базы — всё это коммерческий код.

Бесплатная версия Flowise 3.x без него даже не запускается. Получается, что распространять форк Flowise 3.x с этой папкой, в том числе в виде Docker-образа, лицензия не разрешает. Форк без неё не соберётся.

Как обошли ограничение

Вариантов было два: откатиться на Flowise 2.x, где авторизации ещё не было, и потерять два года изменений, или вырезать коммерческий код и написать замену. Разработчик выбрал второе. Удалить папку новым коммитом недостаточно: файлы остаются в истории, и любой, кто клонирует репозиторий, получает их вместе с ним.

Поэтому он переписал историю с помощью git filter-repo. Из 3634 коммитов остались 3614: двадцать меняли только коммерческие файлы и стали пустыми. Авторство и история остальных сохранились.

Свой модуль авторизации packages/server/src/identity получился на ~800 строк. Регистрация работает, только пока в базе нет ни одного пользователя. Пароли хранятся в bcrypt, поэтому владелец переносится со своим паролем. Сессии — на сервере, а не JWT: в cookie лежит случайный 32-байтовый токен, в базе — только его SHA-256. Сессия живёт 7 дней без активности и 30 дней максимум.

Ограничение попыток входа: 10 неудачных за 15 минут с одного IP и столько же на один e-mail. API-ключи остались совместимыми: права хранятся в той же колонке apikey.permissions. Ключи, созданные во Flowise, работают с прежними ограничениями.

Две из шести свежих уязвимостей Flowise были в SSO: захват учётной записи через совпадение e-mail у разных провайдеров и обход токена приглашения. В Keelflow их просто нет.

Для профиТехнические детали: архитектура, цифры, ссылки

Исходный код Keelflow доступен на GitHub. Автор удалил из истории коммерческие файлы через git filter-repo:

git filter-repo --invert-paths \
 --path packages/server/src/enterprise \
 --path packages/server/src/IdentityManager.ts \
 --path packages/server/test/enterprise

Модуль авторизации — ~800 строк TypeScript. Сессии хранятся на сервере, в cookie — случайный 32-байтовый токен, в базе — SHA-256. Сброс пароля выполняется командой keelflow user <email> <пароль> на сервере. Имена полей isOrganizationAdmin и activeWorkspaceId сохранены для совместимости с открытым кодом и веб-интерфейсом.

Вопросы и ответы

Почему Flowise закрыли?
Команда объяснила, что разработчики всё чаще доверяют сложные задачи агентам для программирования, а жёсткие low-code-процессы упираются в потолок.
Можно ли использовать форк Flowise?
Распространять форк Flowise 3.x с папкой enterprise нельзя — она под коммерческой лицензией. Форк без неё не соберётся. Keelflow вырезал этот код и написал замену.