Supermemory открыла код продукта, который до сентября 2026 продавала: агент живёт в Slack, помнит решения и владельцев задач, вклинивается в чужой тред своими словами и умеет открыть issue или прочитать PR. Разбираем, как устроен граф памяти, где границы сборки и сколько стоит держать её на своём Cloudflare.
Company Brain — это агент, который сидит в Slack вашей команды: читает рабочие треды, складывает их в память по графу прав, отвечает по своим, а не по интернету, и ходит в подключённые инструменты через MCP. Раньше это был платный продукт Supermemory, теперь это тот же код под Apache-2.0: воркер разворачивается в вашем аккаунте Cloudflare, память лежит в вашем аккаунте Supermemory, а ключи к моделям вы платите провайдеру напрямую без наценки.
Репозиторий supermemoryai/company-brain появился 25 сентября 2026 года: Apache-2.0, TypeScript, 419 файлов, 26 документов в docs/ и 11 тестовых файла. Релизов пока ноль, основной контрибьютор один — Дхравья Шахла (Dhravya), сооснователь Supermemory. Это не SDK и не демка: в репозитории лежит весь продукт — воркер, Durable Object, веб-UI, Slack-манифест и внутренняя спецификация на 110 КБ, по которой видно, как агент принимает решения.
| Часть репозитория | Что это |
|---|---|
| Cloudflare Worker (Hono) | точка входа: /brain/* за фича-флагом, проверка подписи Slack, дедуп событий, резолв workspace → org |
Durable Object CompanyBrainAgent | один инстанс на организацию: турны, память, инструменты, автоматизации, аппрувы, лизинги, фоновые задачи |
| D1 + Drizzle | схема и миграции; воркер применяет их сам на первом запросе |
| Веб-UI (React 19 + Tailwind 4) | Home, Graph (граф памяти), Configure: интеграции, модели, промпт, проактивность, автоматизации, навыки |
| Slack-манифест | 20 бот-скоупов и 13 пользовательских, 8 событий |
Из спецификации видно, что за спиной у сборки — полноценный облачный продукт с биллингом: в hosted-версии Company Brain включался только на планах Max и Scale с отдельным аддоном, бесплатного тарифа не было, а единственным неоплаченным путём был 14-дневный триал. Новые регистрации в той версии уже остановлены (POST /brain/trial/start отвечает 409 trial_unavailable). Практический вывод: self-hosted сборка — не «урезанная демка», а тот же продукт, только счета за него вы получаете от Cloudflare, Supermemory и провайдера модели по отдельности.
Продукт продаёт себя одной фразой: «тиммейт в вашем Slack, который действительно знает компанию и может сделать что угодно». На практике это семь групп возможностей, и все они описаны в README репозитория:
| Сценарий | Что делает агент | Статус в сборке |
|---|---|---|
| Клиент пишет в поддержку | вклинивается в тред с ответом из памяти и прошлых тикетов | работает |
| «Прод лежит?» | сверяется с живым Sentry и отвечает, что именно деградирует, вместо «не знаю» | работает |
| Тикет поддержки → фикс в коде | разбирает тикет и передаёт задачу кодинг-агенту | работает |
| «Запланируй встречу» | свободные слоты и инвайт в календарь из Slack | не входит |
| Ресёрч с синтезом многих источников | долгие вопросы «собери всё про X из десяти мест» | не входит |
Архитектура описана в docs/architecture.md и подтверждается кодом. Городьба классическая для Cloudflare-стека, но с одной важной деталью: вся логика агента живёт не в воркере, а в Durable Object — по одному на организацию, поэтому состояние тредов, аппрувов и бюджетов вклинивания не разъезжается между запросами.
Под капотом ответа — гибридный поиск по контейнерам памяти: лимит 40 документов на контейнер, порог релевантности 0.3, параллельность 6, дедупликация по id и выдача топ-40. Для triage-вердикта агент читает примерно 20 последних сообщений канала, а ошибка парсинга или модели трактуется как PASS — молчать безопаснее, чем отвечать наугад.
Самое интересное решение в продукте — как обходятся с приватностью. Память не делится на «общую» и «личную»: сообщение пишется в один контейнер по месту разговора, а читается потом по правилу, которое расширяется тем сильнее, чем приватнее комната. В коде это container tags сервиса supermemory: sm_org_shared (публичные каналы), slack_channel_<id> (приватный канал) и user_<id> (личная память человека).
| Откуда спрашиваете | Что агент имеет право прочитать |
|---|---|
| Публичный канал | только общую память организации — то, что и так видит любой сотрудник |
| Приватный канал | память этого канала плюс общую память организации |
| Личка с ботом | вашу личную память, общую память и память всех приватных каналов, где вы состоите |
Запись узкая, чтение широкое — и это осознанный компромисс, а не недосмотр. Границей служит membership: DM без привязанного пользователя памяти не пишет вообще, а орг-скопный API-ключ supermemory, если читать им аккаунт напрямую, видит все контейнеры, включая личные и приватные каналы. Документация честно предупреждает: это admin-level доступ, и выдавать его команде как «способ спросить мозг» нельзя.
Коннекторы — это живые MCP-подключения: GitHub, Linear, Notion, Sentry, Plain, PostHog, Granola, Gmail, маркетплейс MCP-серверов и свои собственные эндпоинты через «Add custom MCP». Каждый инструмент можно подключить в двух скоупах, и правила для них разные:
| Чтение | Запись | |
|---|---|---|
| Организационный коннектор | используется как запасной, если у вас нет личного | только чтение, даже для админов |
| Личный коннектор | приоритетен — вы получаете максимум своих прав | только через ваш аккаунт |
Все записи — создание issue, комментарий, отправка письма — останавливаются на карточке Approve/Deny, и решить может только тот, кто спросил. Это заметно снижает риск, что агент «сам что-нибудь создаст»: разрешение всегда персональное и разовое.
Chime-in — самая спорная функция любого «мозга компании»: если она шумит, её выключают через день. Здесь на неё навешаны бюджет и фильтр. Агент говорит, только если добавляет то, чего в комнате ещё нет (факт, поправку, следующий шаг), и только из источников, к которым ему действительно разрешено смотреть. Если он не уверен в корректности — молчит: ошибка хуже тишины.
| Режим проактивности | Что происходит |
|---|---|
| All channels (по умолчанию) | вступает в любой разговор, куда его добавили, если может помочь |
| Only its own channel | сам говорит только в #company-brain, в остальных ждёт @mention или личку |
| Per-channel исключения | отдельные каналы помечаются Proactive или Quiet поверх общего правила |
Вклиниваться он умеет только там, где уже состоит: публичные каналы после раздачи админом и приватные, куда его позвали. Фоновые расследования тоже ограничены — не больше двух одновременно и шести в час, каждое под 10-минутной арендой, чтобы один любопытный вопрос не съел весь бюджет внимания команды.
Автоматизация — это обычный текстовый запрос с расписанием: «каждый понедельник в 9 утра выложи в #product дайджест того, что вышло за неделю и что ещё открыто». Тот же планировщик делает разовые напоминания и отложенные проверки («через два часа напомни», «завтра в 10 проверь, докрутилась ли миграция»).
| Куда можно постить | Кто может создать | Откуда читает |
|---|---|---|
| Публичный канал | любой участник | организационные коннекторы + общая память |
| Приватный канал | админы из Configure, участники канала — из Slack | организационные коннекторы + память этого канала |
| Личка себе | вы сами | ваши личные и организационные коннекторы + ваша личная память |
#eng, недельный отчёт «что изменилось в подключённых инструментах».Своих моделей Supermemory не навязывает: ключ к Anthropic, OpenAI, Google или xAI подставляется в MODEL_API_KEY, провайдер определяется по префиксу ключа, и вы платите ему напрямую — без наценки и без посредника. Промпты тюнены под Anthropic и xAI, а дефолты видны прямо в коде (src/brain/turn/model-profile.ts): основная модель grok-4.5, triage — claude-haiku-4.5, запасная — claude-sonnet-5. В Configure → Models меняются модели и уровень «усилия» отдельно для основных турнов и для triage.
| Компонент | Цена | Что входит |
|---|---|---|
| Cloudflare Workers Paid | $5/мес за аккаунт | 10 млн запросов, 30 млн CPU-мс, Containers: 25 GiB-ч памяти, 375 vCPU-мин, 200 GB-ч диска в месяц |
| Cloudflare Workers Free | $0 | 100 тыс. запросов в сутки, 10 мс CPU на вызов, 50 исходящих вызовов на один запрос агента |
| supermemory Free / Pro / Max / Scale | $0 / $19 / $100 / $399 в месяц | включённые кредиты: $5 / $20 / $130 / $600 в месяц; ставки одинаковые на всех планах |
| Daytona (sandbox) | $0,0504 за vCPU-час, $0,0162 за ГиБ-час | нужен только если хочется запускать код на бесплатном плане Cloudflare; $200 вычислительных бесплатно |
| Веб-поиск | $0 по умолчанию | бесплатный keyless-тир Firecrawl — 1000 кредитов в месяц; context.dev стоит $15 за 10 000 кредитов, то есть $0.0015 за поиск или страницу |
| Модель | по прайсу вашего провайдера | прямой счёт от Anthropic, OpenAI, Google или xAI |
Платите вы за три вещи: инфраструктуру (Cloudflare — либо бесплатный план, либо $5 за аккаунт), память (supermemory — от $19 в месяц за живое использование) и токены модели у своего провайдера. Цена ставок supermemory: обычный текст в память — $5 за миллион SM-токенов, «богатый» контент — $10, SuperRAG — $1–2, поиск — $5 за миллион запросов. Компактный минимум для команды, которая уже пользуется ботом каждый день, — $24 в месяц ($19 + $5) плюс токены модели.
Открытие кода — не то же самое, что открытие всего облачного продукта. Разница видна по документации: часть привычных вещей из hosted-версии в self-hosted сборку не переехала, и знать это лучше до деплоя.
| Возможность | Эта сборка | Облачный продукт |
|---|---|---|
| MCP-сервер наружу (Claude Code, Cursor, ChatGPT) | нет: Slack и веб-UI | был через MCP supermemory |
| Фоновая синхронизация Google Drive / OneDrive | нет, только tool-коннекторы | были data-коннекторы |
| Экран назначения админов | нет: роль в таблице member в D1 | был |
| Песочница (shell, git, Python) | нужен ключ Daytona или Workers Paid | встроена |
| Code Mode: цепочки вызовов кодом | работает, в QuickJS внутри воркера | работал |
sm_org_shared — но читать этот тег сможет вся организация.grok-4.5, triage — claude-haiku-4.5, запасная — claude-sonnet-5; всё это меняется в Configure → Models.