Суверенитет

Из чего состоит одна встреча InterMIND

Дополнение к нашей карте времени выполнения: не о том, где выполняется ваша встреча, а из чего она состоит. Стек послойно — где мы запускаем собственный код или программное обеспечение с открытым исходным кодом, где идём на компромисс с проприетарным SaaS, и почему движок, через который проходит большая часть ваших данных, — это наш собственный код с публичным клиентским SDK под лицензией BSD.

The Mind.com Team

Из чего состоит одна встреча InterMIND

Из чего состоит одна встреча InterMIND

Почти каждый продукт строится из одного и того же стандартного стека — крупных проприетарных SaaS-решений по умолчанию, за которые хватаются все. Это путь наименьшего сопротивления. На каждом уровне, где фактически находятся данные вашей встречи, мы выбрали другой путь: наш собственный код или открытый исходный код, который мы можем развернуть самостоятельно.

Это дополнение к Где фактически выполняется одна встреча InterMIND, где была составлена карта географии — где выполняется каждый сервис и какие данные проходят через него. Этот пост отвечает на следующий вопрос, который задаёт команда безопасности: из чего построена эта система — и можем ли мы прочитать её код, провести аудит и заменить её?

Не где она выполняется, а из чего она состоит, слой за слоем.


Стандартные решения по умолчанию и их цена

Каждый продукт — это стек выборов. Для большинства продуктов большинство этих выборов делается по умолчанию: Google Analytics, Firebase, Google Translate API, Auth0, React. Это путь наименьшего сопротивления, и для большинства команд это разумное решение. Компромисс заключается в том, что каждый из них помещает часть вашего стека за вендором, код которого вы не можете прочитать, не можете проверить и от которого не можете уйти без переписывания.

Мы сделали другой выбор на каждом уровне, где фактически находятся данные вашей встречи: наш собственный код или программное обеспечение с открытым исходным кодом, которое мы можем развернуть самостоятельно. Там, где уровень не касается содержания вашей встречи, мы остаёмся прагматичными и прямо об этом говорим. Вот полная картина.


Основа: движок — это наш код, а не код стороннего разработчика

Начнём с уровня, который имеет наибольшее значение, поскольку через него проходит большая часть вашей встречи. Транспорт в реальном времени и перевод голоса/чата работают на mind-sdk + Mind API — нашем собственном движке на OVH France. Стандартный способ создать переведённую встречу — прикрутить SaaS для реального времени (LiveKit) к API перевода (DeepL, Google); мы не используем ни то, ни другое в live-пути. В цикле нет сторонней модели перевода. (Мы действительно используем DeepL, но только для документов, отправленных в чат, а не для live-передачи голоса/чата; см. карту времени выполнения. Мы разобрали механику конвейера в Внутри четырёх конвейеров перевода.)

А вот то, чего нет в карте времени выполнения: SDK, на котором работает ваша встреча, — это открытый исходный код под лицензией BSD 3-Clause — клиент mind-sdk доступен публично по адресу gitlab.com/mindlabs/api/sdk, авторское право принадлежит MindMeeting OÜ, нашему эстонскому юридическому лицу, владеющему IP. Он обращается к Mind API по адресу api.mind.com, который мы запускаем сами на OVH France.

Это не модель "смотри, но не трогай" с просто доступным исходным кодом. BSD 3-Clause — это разрешительная лицензия, одобренная OSI. Ваша команда безопасности может клонировать SDK, прочитать, как именно ваши аудио и текст захватываются, упаковываются во фреймы и транслируются, и провести аудит этой интеграции на соответствие вашим собственным требованиям. Серверный движок, к которому он обращается, наш — а не чёрный ящик стороннего разработчика — и полностью разворачиваемый на собственных серверах движок для арендатора, которому он нужен, есть в нашей дорожной карте, а не то, что мы предлагаем сегодня. Мы обновим этот пост в момент его выпуска.


Слой за слоем: стандартное решение против того, что используем мы

УровеньСтандартное решение по умолчаниюЧто используем мыПочему это важно для вас
Движок реального времени + перевода (голос + чат)LiveKit + API перевода (DeepL / Google)mind-sdk (клиент BSD-3-Clause) + наш Mind API, OVH FranceСамый интенсивный поток данных проходит через наш собственный движок, а не через стороннюю модель — и его клиентский SDK открыт и аудируем
Фронтенд-фреймворкReact (Meta) / Next.jsVue + NuxtOSS под управлением сообщества — ни одна корпорация не владеет фреймворком, на котором работает ваш UI
Продуктовая аналитикаGoogle AnalyticsPostHogОткрытый исходный код, облако в ЕС, проксируется от первого лица через наш собственный домен — данные об использовании не попадают на стороннюю рекламную платформу
ШрифтыGoogle Fonts CDNРазвёртывание на собственных серверах (@nuxt/fonts)Сторонние запросы шрифтов со страницы, которую загружают ваши пользователи, отсутствуют — частое нарушение GDPR исключено
АутентификацияAuth0 / Clerk / Firebase AuthСобственный OIDC, федерация с вашим Google / MicrosoftСессиями не владеет сторонний посредник — вы используете свой собственный провайдер идентификации
Перевод документовGoogle TranslateDeepL (Кёльн)Профильный вендор в ЕС, обработка в Германии
Контент / документацияContentful / Sanity (headless CMS)Nuxt Content (markdown под версионным контролем в git)Тексты на нашем сайте хранятся в нашем репозитории, а не в базе данных вендора
База данных приложенияFirestore / DynamoDB (проприетарные)Postgres (на Neon)Открытый стандарт — переносим на любой хостинг Postgres, не нужно переписывать проприетарный API запросов
Объектное хранилищеПроприетарные blob APITigris (совместим с S3)Открытый протокол — записи и экспорты переносимы в любое хранилище S3
CRM / продажиSalesforce / HubSpotPipedrive (Эстония)Записи о клиентах и сделках хранятся в CRM, зарегистрированной в ЕС, а не на платформе продаж в США

Через эту таблицу проходят две линии. Открытый исходный код там, где инструмент обрабатывает ваши данные, — чтобы его можно было проверить и, в принципе, разворачивать самостоятельно. Открытые стандарты (Postgres, API S3, OIDC) там, где мы зависим от инфраструктуры, — чтобы ничего не было привязано к ценообразованию или позиции по комплаенсу одного вендора. Postgres можно перенести на любой хостинг Postgres; хранилище можно перенести в любое хранилище S3; аутентификация федерируется к провайдеру идентификации, который у вас уже есть. Последняя строка находится на третьей оси: CRM, хранящая записи о клиентах, зарегистрирована в ЕС (Pipedrive, Эстония), а не является платформой продаж в США — она не с открытым исходным кодом, но и не под юрисдикцией США.

Пара из них заслуживает ещё одного предложения. PostHog имеет открытый исходный код и может разворачиваться самостоятельно; мы запускаем его в облаке PostHog в ЕС и проксируем от первого лица через наш собственный origin, поэтому события не молча блокируются блокировщиками рекламы и не проходят через сторонний домен аналитики. Аутентификация никогда не идёт к стороннему SaaS аутентификации, который находился бы между вами и вашими сессиями — мы сами запускаем процесс OIDC и федерируем к вашей существующей идентичности Google или Microsoft. А шрифты на каждой странице обслуживаются из нашего собственного домена; единственное место, где Google Fonts появляется в нашей кодовой базе — это офлайн-скрипт брендовых ассетов, но никогда в приложении, которое загружают ваши пользователи.


Где мы идём на компромисс — заявлено открыто

Мы не притворяемся, что весь стек написан с нуля или не связан с США. Это не так, и пост, утверждающий обратное, был бы опровергнут нашей собственной картой времени выполнения.

Базовая инфраструктура — хостинг и SSR (Vercel), вычислительные мощности сервера встреч (Fly.io), платежи (Stripe), транзакционная почта (Resend) — работает на SaaS, зарегистрированных в США. Stripe и Resend обрабатывают биллинг и приглашения и никогда не видят содержимое встреч. Vercel и Fly — это арендованные вычислительные мощности: на них работает наш собственный код, и сервер встреч на Fly действительно обрабатывает live-сессию и транскрипт, который читает наш дайджест — но это наш код на их машинах, а не продукт вендора, поглощающий вашу встречу. Всё это выполняется в ЕС во время работы (тема карты времени выполнения).

Это осознанный и ограниченный компромисс: владеть и открывать исходный код плоскости данных; использовать лучший доступный SaaS для плоскости управления. Суть в том, чтобы назвать это — «суверенитет» значит немного, если исключения не лежат на столе рядом с достижениями.


Шаги ИИ после встречи и план

Ни одна проприетарная модель, зарегистрированная в США, не касается контента, полученного из встреч. Шаги языковой модели, которые выполняются после звонка — AI-дайджест (темы, решения, пункты действий), сводка после встречи и AI-редактор заметок — всё это находится на обработчиках в ЕС. Дайджест и генеративные действия редактора работают на Mistral, размещенной в ЕС, с нулевым хранением данных (доступной через Vercel AI Gateway, привязанной к провайдеру Mistral). Сводка и действие перевода редактора работают на нашем собственном движке в ЕС на OVH — том же, что и для живого голоса и чата. Голос в реальном времени, чат, заметки и документы вообще никогда не касались LLM общего назначения.

Единственная модель из США, всё ещё участвующая в процессе, оценивает наш публичный бенчмарк перевода — выставляя баллы машинному переводу фиксированных эталонных предложений FLORES-200, а не чьим-либо встречам.

Мы продолжаем идти дальше в шагах на EU-Mistral: отключение, контролируемое владельцем, чтобы полностью выключить дайджест, и развёртываемая на собственных серверах модель суммаризации с открытыми весами на OVH (класса Kimi) для замены внешней Mistral. Суть маршрута с открытыми весами не в том, в чьей лаборатории обучались веса — а в том, что открытые веса могут работать на инфраструктуре, которую мы контролируем, что удерживает их на той же оси открытости и возможности самостоятельного развёртывания, что и остальная часть плоскости данных. Оба пункта находятся в дорожной карте, а не доставлены; мы обновим этот пост, когда они будут выпущены.


Почему это важно за рамками нас самих

Это не инженерия ради инженерии. Причина строить стек таким образом проявляется на вашей стороне контракта:

  1. Аудируемость. SDK, на котором работает ваша встреча, представляет собой код с открытым исходным кодом, который может прочитать ваша команда безопасности, а движок за ним — наш собственный, а не чёрный ящик стороннего разработчика.
  2. Переносимость. Открытые стандарты на каждом уровне данных — Postgres, S3, OIDC — означают отсутствие проприетарной блокировки. То, что можно перенести, не привязано к одному вендору.
  3. Возможность самостоятельного развёртывания. Уровни данных с открытыми стандартами — Postgres, S3, OIDC — уже работают на инфраструктуре под вашим контролем; полностью разворачиваемый на собственных серверах движок перевода находится в дорожной карте для арендаторов, которым он нужен.

Такова картина на 2026-06-07. Мы обновим её при изменении стека — замене вендора, перестройке уровня, замене модели дайджеста. Текущая конфигурация проверяема в нашем открытом vercel.json, нашем nuxt.config.ts и репозитории mind-sdk под лицензией BSD-3-Clause, ссылка на который приведена выше.

Если какой-то уровень здесь выглядит неправильным, или вашему обзору безопасности требуется ответ, которого нет на этой карте, напишите нам. Мы скорее исправим недостающую деталь, чем позволим вам найти её при аудите кода.


Источники: репозиторий mind-sdk (BSD-3-Clause), FLORES-200; факты о стеке сверены с развёрнутой конфигурацией (vercel.json, nuxt.config.ts) и опубликованным кодом, проверено в августе 2026 года.

Получать новые публикации по email

Мы пришлём письмо, когда выйдет новая публикация. Отписаться можно в любой момент.