Суверенітет

З чого складається одна зустріч 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 у Франції. Стандартний спосіб побудувати зустріч із перекладом — прикрутити SaaS реального часу (LiveKit) до API перекладу (DeepL, Google); ми не використовуємо жодного з них у живому потоці даних. Жодна стороння модель перекладу не бере участі в цьому процесі. (Ми справді використовуємо DeepL — але лише для документів, доданих у чат, а не для живого голосу/чату; див. карту рантайму. Механіку конвеєрів ми розглянули у статті Усередині чотирьох конвеєрів перекладу.)

Ось те, чого немає на карті рантайму: SDK, на якому працює ваша зустріч, має відкритий код за ліцензією BSD 3-Clause — клієнт mind-sdk публічно доступний за адресою gitlab.com/mindlabs/api/sdk, авторські права належать MindMeeting OÜ, нашій естонській юридичній особі з прав інтелектуальної власності. Він взаємодіє з Mind API за адресою api.mind.com, який ми самі експлуатуємо на OVH у Франції.

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


Рівень за рівнем: стандартне рішення проти того, що використовуємо ми

РівеньТипове рішення за замовчуваннямЩо використовуємо миЧому це важливо для вас
Рушій реального часу та перекладу (голос + чат)LiveKit + API перекладу (DeepL / Google)mind-sdk (клієнт BSD-3-Clause) + наш Mind API, OVH у ФранціїНайбільший потік даних проходить через наш власний рушій, а не сторонню модель — і клієнтський SDK відкритий та піддається аудиту
Фронтенд-фреймворкReact (Meta) / Next.jsVue + NuxtВідкритий код, яким керує спільнота — жодна окрема корпорація не володіє фреймворком, на якому працює ваш інтерфейс
Продуктова аналітикаGoogle AnalyticsPostHogВідкритий код, хмара в ЄС, проксується як first-party через наш власний домен — дані про використання не потрапляють до сторонньої рекламної платформи
ШрифтиGoogle Fonts CDNРозміщені самостійно (@nuxt/fonts)Жодних звернень до сторонніх шрифтів зі сторінки, яку завантажують ваші користувачі — усунуто типове зауваження в межах GDPR
АвтентифікаціяAuth0 / Clerk / Firebase AuthВласний OIDC, федерований з вашим Google / MicrosoftЖоден посередник з автентифікації не утримує ваші сесії — ви використовуєте власного постачальника ідентифікації
Переклад документівGoogle TranslateDeepL (Кельн)Спеціалізований постачальник з ЄС, обробка в Німеччині
Функції ШІ (дайджест, резюме документів, асистент написання, Ask AI, Mia)Модель одного постачальника за його власним APIШлюз ШІ, який обирає організація, — Azure OpenAI EU Data Zone (за замовчуванням), Vertex AI EU, Amazon Bedrock у Франкфурті — або власна OpenAI-сумісна кінцева точкаМодель ви обираєте й розміщуєте самостійно; вимкнення ШІ — це просто налаштування
Контент / документація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 в ЄС і проксуємо як first-party через власний домен, тому події не губляться мовчки через блокувальники реклами і не проходять через домен стороннього сервісу аналітики. Автентифікація ніколи не йде через сторонній SaaS для автентифікації, який опинився б між вами та вашими сесіями, — ми самі виконуємо потік OIDC та федеруємося з наявною ідентифікацією Google чи Microsoft. А шрифти на кожній сторінці подаються з нашого власного домену; єдине місце в нашій кодовій базі, де з'являється Google Fonts, — це офлайн-скрипт для брендових ресурсів, який ніколи не потрапляє в застосунок, що завантажують ваші користувачі.


Де ми прагматичні — сказано відкрито

Ми не вдаємо, що весь стек написаний вручну або не має відношення до США. Це не так, і стаття, яка стверджувала б протилежне, суперечила б нашій же карті рантайму.

«Сантехніка» — хостинг та SSR (Vercel), обчислення для сервера зустрічей (Fly.io), платежі (Stripe), транзакційна пошта (Resend) — працює на SaaS, зареєстрованих у США. Stripe і Resend обробляють оплату та запрошення й ніколи не бачать вмісту зустрічі. Vercel і Fly — це орендовані обчислювальні потужності: на них працює наш власний код, а сервер зустрічей на Fly справді обробляє живу сесію та стенограму, яку читає наш дайджест, — але це наш код на їхніх машинах, а не продукт постачальника, що поглинає дані вашої зустрічі. Усе це виконується в ЄС під час роботи (тема карти рантайму).

Це свідомий, обмежений компроміс: власна розробка та відкритий код для площини даних; найкращий доступний SaaS — для площини керування. Головне — назвати це вголос: «суверенність» мало що означає, якщо винятки не покладені на стіл поруч із перевагами.


Кроки зі штучним інтелектом і план, який реалізовано

Кроки, що використовують мовну модель, — дайджест ШІ (теми, рішення, пункти дій), резюме документів, генеративні дії редактора нотаток зі ШІ, Ask AI та Mia — працюють на шлюзі ШІ, який обирає ваша організація: Azure OpenAI у зоні даних ЄС за замовчуванням, Vertex AI на мультирегіональній кінцевій точці ЄС або Amazon Bedrock у Франкфурті — за вибором, кожен у нашому власному орендарі з нульовим зберіганням даних і без навчання на вмісті клієнтів, — або власна OpenAI-сумісна кінцева точка, яка залишає модель на інфраструктурі, яку контролюєте ви. Резюме після зустрічі та дія перекласти в редакторі проходять через тракт перекладу, а не через мовну модель. Голос, чат, нотатки та документи в реальному часі взагалі ніколи не наближалися до універсальної LLM.

Це чесна форма цього рівня: моделі пропрієтарні, а їхні постачальники — американські компанії, що працюють у регіонах ЄС, — той самий компроміс, що й із «сантехнікою» вище, названий поруч, а не прихований. Замість власної моделі, розміщеної самостійно, ми реалізували вибір: організація може повністю вимкнути ШІ (транскрипція та переклад продовжують працювати), і вона може спрямувати кожну функцію ШІ на власну кінцеву точку — vLLM у власному дата-центрі, розгортання у власному орендарі, — що ставить цей рівень на ту саму вісь відкритості й можливості самостійного розміщення, що й решту площини даних. Наш публічний бенчмарк перекладу оцінюється суддею-LLM (Gemini, із Claude як резервним варіантом) на фіксованих еталонних реченнях FLORES-200 — і ніколи на чиїйсь реальній зустрічі.


Чому це важливо не лише для нас

Це не інженерія заради інженерії. Причина будувати стек саме так проявляється на вашій стороні договору:

  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

Один лист на місяць із новими публікаціями та оновленнями продукту. Скасувати підписку можна будь-коли.