Команда переросла Excel-таблицы и упёрлась в счёт от amoCRM. Знакомая ситуация. Обычно дальше — компромисс: платить за чужие ограничения или мириться с урезанным бесплатным тарифом. Twenty предлагает третий путь — CRM-систему с открытым кодом, которую вы ставите на свой сервер и настраиваете под свой процесс, а не под чужой шаблон.

На GitHub у проекта 54 000 звёзд, код распространяется под AGPL-3.0, технический стек — TypeScript. Twenty не притворяется простой CRM для первого дня. Это платформа для тех, кому нужен контроль над данными и кто готов invest в настройку. Заявление амбициозное: альтернатива Salesforce, пересобранная в 2026 году, без проприетарных языков вроде APEX и платных сертификаций.

Вторая версия принесла Apps framework — механизм для построения приложений поверх CRM, не форкая основной репозиторий. ИИ-возможности встроены в ядро, а не прикручены сбоку: чат по данным, автономные агенты в workflow и MCP-сервер работают в едином контуре прав доступа с обычными пользователями.

Важно: Twenty — не лёгкая CRM «на старт». Это платформа, которая вознаграждает команды, готовых настраивать инструмент под себя. Если нужен вариант «настроил и забыл» — Pipedrive или HubSpot подойдут лучше.

Главный контраст с облачными CRM — данные принадлежат вам. Twenty поднимается на собственном сервере через Docker, подключается к внешним системам через REST, GraphQL и MCP — и не обложен тарифными ограничениями за каждого пользователя.

Что это и как начать

Twenty — CRM-система с открытым исходным кодом на TypeScript. Бэкенд построен на NestJS с PostgreSQL и Redis, фронтенд — на React. Хранилище PostgreSQL даёт побочный эффект: прямое подключение BI-инструментов к базе без промежуточных слоёв.

Запуск в двух режимах. Облачный — регистрация за минуту, обновления приходят автоматически. Self-hosted — Docker Compose на вашем сервере, со всеми функциями Pro-плана и без лимитов на пользователей. Разница только в том, кто отвечает за инфраструктуру.

Быстрый старт: self-hosted за 4 шага

Минимум для сервера — 2 ГБ оперативной памяти. Docker и Docker Compose должны быть предустановлены.

bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)

Одна команда скачивает docker-compose.yml, генерирует .env-файл и поднимает все контейнеры. После завершения — откройте браузер по адресу сервера, создайте воркспейс и начинайте работать.

Для развёртывания конкретного релиза передайте переменные:

VERSION=vx.y.z BRANCH=main bash <(curl -sL https://raw.githubusercontent.com/twentyhq/twenty/main/packages/twenty-docker/scripts/install.sh)

Совет: перед запуском в прод укажите SERVER_URL в .env — это публичный адрес, по которому Twenty будет доступен. Без корректного SERVER_URL OAuth-авторизация и MCP-подключение не заработают.

Что внутри: возможности и архитектура

Архитектура Twenty — четыре базовых примитива: объекты, представления, workflows и агенты. Каждый расширяется кодом через Apps framework и SDK. Это не готовая CRM с фиксированным набором полей, а платформа, где структура данных описывается под конкретный процесс.

МодульНазначение
Контакты и компанииЕдиная карточка с таймлайном всех касаний, историей писем и произвольными полями
Воронки сделокKanban с перетаскиванием между стадиями, фильтрами и группировкой по любому полю
Задачи и заметкиПривязанные к сделкам и контактам, с напоминаниями и комментариями внутри карточки
EmailПодключение ящика IMAP/SMTP, автоматическая привязка входящих и исходящих к нужному контакту
Кастомные объектыНовые сущности с любыми полями — создаются через настройки, программировать не нужно
Импорт данныхЗагрузка контактов, компаний и сделок из CSV, миграция из других систем
Real-timeЛюбые изменения мгновенно отображаются у всех участников воркспейса
Схема возможностей Twenty: модель данных, logic tools, skills, layouts и widgets

Кастомные объекты — точка, где Twenty перестаёт быть «ещё одной CRM». Создаёте сущность «Проект» с полями «бюджет», «дедлайн» и «ответственный» — и она ведёт себя как стандартная: попадает в фильтры, доступна в workflow, через API, в AI-чате. Без плагинов и без строчки кода.

ИИ внутри CRM: чат, агенты и MCP

ИИ в Twenty — не отдельный плагин, а слой, пронизывающий продукт. Чат по данным, агенты в автоматизациях и MCP-сервер работают с одной моделью данных и одной системой прав. Если у менеджера нет доступа к чужим сделкам — ассистент их тоже не увидит.

Экран Twenty 2.0 про AI agents, chats и MCP в CRM

AI-чат по данным

Чат принимает вопросы о CRM на обычном языке. Он понимает контекст открытой страницы: «эта компания» или «эта сделка» — указывают на запись, которая сейчас на экране.

  • Находит и группирует записи любого типа — от контактов до задач
  • Создаёт новые записи и правит существующие прямо в диалоге
  • Собирает выжимки по карточкам контактов и сделок
  • Готовит черновики дашбордов и схем workflow

Примеры: «Какие сделки закрываются в этом месяце?», «Что висит в переговорах больше 30 дней?», «Собери сводку по всем касаниям с этим человеком». Чат ограничен правами пользователя — чужие закрытые сделки не появятся в ответе.

AI-агенты в workflow

Агенты — следующий уровень после чата. Они действуют автономно внутри автоматизаций, как самостоятельный шаг. В конструкторе workflow добавляется AI Agent, где задаётся:

  • Промпт — описание задачи с подставленными переменными из предыдущих шагов
  • Модель — какой LLM обрабатывает задачу
  • Схема ответа — структура данных, в которой агент вернёт результат
  • Права — к каким объектам и операциям агент имеет доступ

Что поручают агентам: дополнение записей данными извне, подготовка follow-up писем, поиск «залипших» сделок в воронке, разбор входящих лидов и направление их нужной команде.

Агент — такой же шаг workflow, как любой другой. Его можно ставить в цепочку с ручными подтверждениями, ветвлениями и вызовами сторонних API. Пример типовой цепочки:

flowchart LR
A["Старт: новая сделка"] --> B["Загрузить данные"]
B --> C["AI-агент: оценка риска"]
C --> D{"Высокий риск?"}
D -->|"Да"| E["Задача менеджеру"]
D -->|"Нет"| F["Сменить статус"]

Skills и Tools

ИИ-слой Twenty состоит из двух кирпичей. Tools — операции над CRM: поиск, создание, изменение записей. Skills — наборы инструкций, которые чат подтягивает под конкретную задачу. Этот же набор инструментов открывается внешним клиентам через MCP.

Через Apps framework и SDK разработчики описывают собственные skills и агенты в коде:

import { defineSkill } from 'twenty-sdk/define';

export default defineSkill({
  universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
  name: 'sales-outreach',
  label: 'Sales Outreach',
  description: 'Guides the AI agent through a structured sales outreach process',
  icon: 'IconBrain',
  content: `You are a sales outreach assistant. When reaching out to a prospect:
  1. Research the company and recent news
  2. Identify the prospect's role and likely pain points
  3. Draft a personalized message referencing specific details
  4. Keep the tone professional but conversational`,
});
import { defineAgent } from 'twenty-sdk/define';

export default defineAgent({
  universalIdentifier: 'b3c4d5e6-f7a8-9012-bcde-f34567890123',
  name: 'sales-assistant',
  label: 'Sales Assistant',
  description: 'Helps the sales team draft outreach emails and research prospects',
  icon: 'IconBrain',
  systemPrompt: `You are a sales assistant. Help the team research prospects and draft personalized outreach emails. Always reference specific details about the company.`,
});

Внимание: Skills и агенты — статус alpha. Функционал работает, но команда активно дорабатывает. Перед тем как пускать агента на рабочие данные — прогоните его на отдельном воркспейсе и дайте минимум прав.

Интеграция: API, MCP и webhooks

Twenty открывает данные через три независимых канала: REST, GraphQL и нативный MCP-сервер. Webhooks сообщают о событиях в real-time. Все каналы работают с единой моделью данных, включая пользовательские объекты.

REST API

Классический REST с Bearer-токеном. Ключ создаётся в настройках: Settings, затем APIs и Webhooks, раздел API Keys.

curl -X GET https://api.twenty.com/rest/metadata/objects \
  -H "Authorization: Bearer ***"

Базовые пути: /rest/people, /rest/companies, /rest/opportunities, /rest/tasks. Поддерживается полный CRUD по любому объекту — штатному и кастомному.

GraphQL API

Когда нужны связанные данные в одном запросе — GraphQL. Playground открыт по адресу https:///graphql. Запрос контактов с компанией и почтой:

query {
  people(first: 10) {
    edges {
      node {
        id
        name { firstName lastName }
        company { name }
        emails { primaryEmail }
      }
    }
  }
}

MCP-сервер

MCP — Model Context Protocol, единый стандарт для связи ИИ-ассистентов с внешними сервисами. Twenty включает MCP-сервер в каждый Cloud-воркспейс по умолчанию. Клиенты с поддержкой MCP — Claude Desktop, Cursor, ChatGPT, OpenClaw — подключаются через OAuth и получают доступ к контактам, сделкам, задачам и заметкам Twenty.

Конфигурация для MCP-клиента:

{
  "mcpServers": {
    "twenty": {
      "url": "https://<your-instance>/mcp"
    }
  }
}

После подключения ассистент видит доступные tools Twenty, подтягивает skills и выполняет действия — с теми же правами, что у пользователя, от имени которого выполнено подключение.

Webhooks

Webhooks настраиваются там же, в Settings → APIs & Webhooks → Webhooks. Twenty отправляет HTTP POST-запрос на ваш URL при каждом создании, изменении или удалении записи — любого типа, включая кастомные объекты.

Формат событий: person.created, company.updated, opportunity.updated, note.created и так далее для всех типов. Фильтрация по типам пока не предусмотрена — все события идут на один эндпоинт.

Для проверки подлинности каждый запрос подписывается. Заголовок X-Twenty-Signature содержит HMAC-подпись, которую нужно сверить на своей стороне. Пример тела:

{
  "event": "person.created",
  "data": {
    "id": "abc12345",
    "firstName": "Alice",
    "lastName": "Doe",
    "email": "alice@example.com",
    "createdAt": "2025-02-10T15:30:45Z",
    "createdBy": "user_123"
  },
  "timestamp": "2025-02-10T15:30:50Z"
}

Ответьте 2xx-статусом (200–299) для подтверждения приёма. Остальные коды логируются как неудачные доставки.

Apps framework и SDK

Вторая версия превратила Twenty из CRM в платформу. SDK позволяет создавать расширения поверх CRM, не трогая основной репозиторий. Каркас нового приложения — одной командой:

npx create-twenty-app my-app

Структура данных описывается в коде:

import { defineObject, FieldType } from 'twenty-sdk/define';

export default defineObject({
  nameSingular: 'deal',
  namePlural: 'deals',
  labelSingular: 'Deal',
  labelPlural: 'Deals',
  fields: [
    { name: 'name', label: 'Name', type: FieldType.TEXT },
    { name: 'amount', label: 'Amount', type: FieldType.CURRENCY },
    { name: 'closeDate', label: 'Close Date', type: FieldType.DATE_TIME },
  ],
});

Деплой в воркспейс:

npx twenty app:publish --private

Расширение автоматически наследует систему прав, дашборды, workflow, API, AI-чат, webhooks и аудит-логи Twenty. SDK охватывает: пользовательские объекты, React-компоненты для нативного UI, серверную логику, skills и агентов — всё на TypeScript.

Инсайт: Apps framework — переосмысление идеи Salesforce AppExchange. Та же концепция расширений поверх CRM, но на TypeScript, без APEX и без сертификаций. Команда со знанием React и PostgreSQL может войти в рынок CRM без переобучения.

Тарифы и лицензирование

Twenty доступен в self-hosted и облачном вариантах. Лицензия AGPL-3.0 с Twenty Application Exception — ядро открыто, пакеты SDK, UI-библиотека и приложения — под MIT.

ПланЦенаСостав
Self-hosted (Free)0 ₽Все функции Pro-плана. Нет лимитов на пользователей и записи. Инфраструктура — на вашей стороне
Cloud Pro$9/польз/мес (год)Облако Twenty, все базовые CRM-функции, почта и календарь, workflows, стандартная поддержка
Cloud Organization$19/польз/мес (год)Всё из Pro плюс SSO, row-level permissions, AI usage data, audit logs, приоритетная поддержка

Важно: Premium-функции — SSO, row-level permissions, AI usage data, audit logs — доступны только на Organization. На Pro и бесплатном self-hosted их нет.

Бесплатный self-hosted не урезает базовый функционал. Разница между ним и облаком — в управлении сервером и поддержке, не в возможностях. Organization (Self-Hosted) добавляет premium-функции и снимает требование открывать кастомный код по AGPL перед распространением.

Практические сценарии

Уход с amoCRM или Bitrix24

Ставите Twenty на VPS за 1 500 ₽/мес, грузите контакты из CSV, настраиваете стадии воронки под свой процесс. На выходе — CRM без ежемесячной подписки за каждого сотрудника и без потолка по числу сделок. Пятеро менеджеров на amoCRM обходятся от 4 500 ₽/мес — Twenty на собственном сервере заменяет это стоимостью аренды VPS.

Продажи через ИИ-агента

Twenty подключается к агенту в OpenClaw или Claude Desktop по MCP. Агент читает контакты и сделки, сам обновляет статусы, ставит задачи и собирает сводки по воронке — через обычный язык, без программных интеграций.

Оценка сделок прямо в воронке

Логика остаётся внутри Twenty. В workflow добавляется шаг AI Agent: при появлении новой сделки агент анализирует описание и переписку, расставляет приоритеты и при высоком риске создаёт задачу на ответственного. Один контур прав, никакого внешнего оркестратора.

Связка с n8n или Make

Webhook ловит новую сделку → n8n принимает событие → перенаправляет уведомление в Telegram, открывает тикет в Notion, дописывает строку в таблицу Google Sheets. Все CRUD-операции доступны через REST API Twenty, а webhooks доставляют события в реальном времени — без необходимости постоянно опрашивать сервер.

Аналитика поверх PostgreSQL

База PostgreSQL открыта для прямого подключения. Metabase, Grafana или любой BI-инструмент подключается к базе и строит отчёты без ограничений встроенной аналитики. twenty-query-builder даёт типобезопасный доступ к данным для программных запросов.

Twenty — не CRM, которую вы покупаете, а CRM, которую вы собираете. Открытый код, TypeScript и MCP-сервер из коробки стирают границу между «коробочным продуктом» и «собственной разработкой». Если команда готова invest в настройку — она получает платформу, которая растёт вместе с процессом продаж, а не диктует его.

Ограничения

Ограничения

Минимум 2 ГБ RAM — Docker-развёртывание требует не менее 2 ГБ оперативной памяти.

Меньше — процессы падают. Для production с реальной нагрузкой рекомендуется 4 ГБ и выше, особенно если включены AI-агенты и workflows.

Skills и агенты — статус alpha — По официальной документации, AI skills и agents работают, но активно дорабатываются.

Команда Twenty прямо указывает: «currently in alpha». Использование на боевых данных требует тестирования на отдельном workspace и минимальных прав.

Premium-функции не входят в бесплатный self-hosted — SSO, row-level permissions, AI usage data и audit logs — только на тарифе Organization.

Бесплатный self-hosted включает все Pro-функции, но premium-возможности требуют Enterprise-ключа.

Экосистема интеграций моложе конкурентов — Twenty честно признаёт в документации: набор готовых интеграций меньше, чем у HubSpot или Salesforce.

Если нужна сотня предустановленных коннекторов прямо сейчас — экосистема ещё не доросла. Но REST, GraphQL, webhooks и MCP покрывают программные интеграции.

Фильтрация webhooks по событиям не реализована — Все типы событий (created, updated, deleted) отправляются на один URL без фильтрации.

Если нужен только person.created, придётся фильтровать на своей стороне по полю event в теле запроса.

Антипаттерны

Антипаттерны

Сажать AI-агента на боевые данные без теста — AI-слой в alpha.

Перед боевым запуском — тестовый workspace, минимальные права, проверка на реальных данных. Агент с правами на запись может изменить или удалить записи, если промпт составлен неточно.

Менять настройки Docker вне документации — Официальный гайд предупреждает: изменяйте только те настройки, которые явно описаны.

Правка docker-compose.yml «по наитию» — частая причина сломанных установок, особенно вокруг SERVER_URL и переменных окружения.

Игнорировать валидацию webhook-подписи — Twenty подписывает каждый webhook HMAC-подписью в заголовке X-Twenty-Signature.

Если не проверять подпись на своей стороне, эндпоинт открыт для подделки запросов. Валидация — несколько строк кода, но она обязательна.

Ожидать plug-and-play от self-hosted — Twenty — не «настроил и забыл».

Платформа вознаграждает команды, готовые настраивать инструмент под себя. Если нужен вариант без участия разработчика — выбирайте облачный тариф или другую CRM.

Чеклист

Чеклист

Проверьте системные требования — Перед установкой: Docker и Docker Compose установлены, минимум 2 ГБ RAM, домен или IP для SERVER_URL.

Без корректного SERVER_URL OAuth и MCP не заработают.

Начните с однотипного install-скрипта — bash <(curl -sL …install.sh) — самый надёжный путь.

Ручная сборка docker-compose.yml возможна, но скрипт гарантирует совместимую конфигурацию.

Настройте права AI-агента до запуска — Settings

→ Members → Roles. Определите, к каким объектам и полям агент имеет доступ. Read-only для начала — даже если потом расширите до write.

Подключите MCP для внешних агентов — Конфигурация MCP-клиента — 5 строк JSON.

После подключения проверьте: агент видит tools Twenty, может читать контакты и сделки, уважает права доступа.

Проверьте webhooks на тестовом эндпоинте — Создайте webhook на тестовый URL, создайте запись в CRM, убедитесь что POST приходит.

Валидируйте подпись. Только потом переключайте на боевой эндпоинт.

Опишите кастомные объекты как код — Если планируете расширять — используйте Apps framework и twenty-sdk.

Объекты, определённые как код, версонируются и деплоятся на любой workspace. UI-настройка быстрее для прототипа, но код надёжнее для production.

Ссылки

Ссылки