Установка
Control Center работает двумя способами: как веб-приложение по адресу app.usectrl.dev, которое не нужно скачивать, или как приложение для компьютера, которое вы устанавливаете. Это одно и то же приложение с одними и теми же возможностями. Разница только в том, где запускается сервер, — а веб-приложение не может запустить его за вас.
Использование в браузере
Заголовок раздела «Использование в браузере»app.usectrl.dev — это то же приложение, скомпилированное для браузера. Ничего устанавливать и обновлять не нужно. Откройте его и подключитесь.
Чего вкладка браузера не может — так это быть сервером. Каждый клиент — настольный,
веб- и телефонный — это тонкий рендерер поверх headless cc_server, который владеет
базой данных и выполняет работу, поэтому веб-приложение всегда обращается к серверу,
который запускаете вы. Дать ему сервер можно двумя способами:
Сервер на вашей собственной машине. Запустите cc_server локально и укажите
веб-приложению ws://localhost:9030. Браузеры считают localhost доверенным, поэтому
здесь не нужны ни сертификат, ни туннель. Это самый быстрый способ попробовать
веб-приложение, и ваши данные не покидают вашу машину.
Сервер на другой машине. Поскольку app.usectrl.dev отдаётся по HTTPS, сервер не на
локальной машине должен быть доступен по wss:// с сертификатом, которому браузер уже
доверяет. cc_server отказывается привязываться к адресу, отличному от loopback, без
TLS, поэтому выберите одно из:
- выдайте ему сертификат напрямую, с помощью
--tls-certи--tls-key - поставьте его за обратный прокси, терминирующий TLS, и запустите с
--insecure - откройте к нему доступ через туннель или VPN, который предоставляет сертификат, — Tailscale, cloudflared или похожие. В разделе Настройки → Сервер → Подключение и состояние встроенный туннель включается в пункте Открыть доступ к серверу.
Когда сервер находится за прокси, NAT или туннелем, задайте --public-url — адрес, по
которому клиенты должны фактически подключаться. По умолчанию он берётся из локальной
привязки, поэтому без него клиенты обращаются не к тому хосту.
Некоторые вещи остаются только в приложении для компьютера, потому что им нужно нативное окно или собственные аудиоустройства машины: плавающая пилюля режима фокуса, системные всплывающие уведомления (центр уведомлений внутри приложения работает везде), «начать запись и привязать» из события календаря и повторный запуск резюме встречи. Всё остальное — пространства, агенты, проверка pull request, конвейеры, тикеты, память и сама запись встреч — ведёт себя одинаково.
Чтобы подключить веб-приложение к серверу, см. Подключиться к удалённому серверу. Чтобы разместить сервер самостоятельно, см. Запустить headless-сервер.
Системные требования приложения для компьютера
Заголовок раздела «Системные требования приложения для компьютера»| Требование | macOS | Windows | Linux |
|---|---|---|---|
| Версия ОС | macOS 13+ (Ventura) | Windows 10+ | Ubuntu 22.04+ или другой дистрибутив с glibc 2.35+ и GTK 3 |
| Архитектура | Apple Silicon (arm64) | x64, ARM64 | x86_64 |
| Git | Требуется | Требуется | Требуется |
| Место на диске | ~200 МБ для приложения плюс каталог данных сервера | ~200 МБ | ~200 МБ |
Для Mac с Intel готовой сборки нет. Вместо неё соберите из исходного кода.
Каталог данных сервера разрастается куда сильнее самого приложения. При первом запуске
cc_server принудительно устанавливает модели на устройстве — текстовые эмбеддинги
(~90 МБ), диаризацию говорящих (~35 МБ) и выбранную речевую модель (по умолчанию
Parakeet TDT v3, ~600 МБ; варианты Whisper — 198–626 МБ) — а также встроенную сборку
code-server; кроме того, каждая беседа агента получает worktree с copy-on-write из
репозиториев, с которыми работает (в Windows — обычный git worktree). Речь не
опциональна: без модели ASR операции встреч и диктовки не выполняются. Первая загрузка
речевой модели всё равно требует одной перезагрузки, прежде чем запись станет доступна.
Приложение для компьютера указывает своему серверу каталог поддержки приложений текущего
пользователя ОС. cc_server, запущенный вручную без --data-dir, по умолчанию
использует <application data>/control-center — ~/Library/Application Support/control-center в macOS, %APPDATA%\control-center в Windows, $XDG_DATA_HOME/control-center (или ~/.local/share/control-center) в Linux.
Скачивание
Заголовок раздела «Скачивание»Все перечисленные ниже артефакты публикуются в GitHub Releases.
macOS (Apple Silicon)
Заголовок раздела «macOS (Apple Silicon)»Скачайте Control-Center-<version>-arm64.dmg, откройте его и перетащите Control Center в
папку «Программы». Сборка подписана Developer ID и нотаризована Apple, поэтому
открывается обычным образом.
Windows (x64, ARM64)
Заголовок раздела «Windows (x64, ARM64)»Control-Center-<version>-x64-setup.exe— установщик для текущего пользователя.Control-Center-<version>-windows-x64.zip— портативный zip-архив.Control-Center-<version>-arm64-setup.exe— установщик для текущего пользователя.Control-Center-<version>-windows-arm64.zip— портативный zip-архив.
В Windows checkout’ы пространств делаются через git worktree (без copy-on-write).
Linux (x86_64)
Заголовок раздела «Linux (x86_64)»Control-Center-<version>-x86_64.AppImageControl-Center-<version>-linux-x64.tar.gz
AppImage содержит сведения об обновлениях, поэтому AppImageUpdate или appimaged могут обновить его до последнего релиза на месте, скачивая только изменившееся.
Оба собраны на Ubuntu 22.04 и работают на нём или на чём-то более новом (Debian 12,
Fedora 36 и новее): они линкуются с glibc 2.35 и libstdc++ из GCC 12, а GTK 3 берут из
системы. Немногочисленные библиотеки, которых может не хватать в обычной системе,
поставляются внутри них, поэтому больше ничего устанавливать не нужно. Звук —
воспроизведение встреч, звуковой пейзаж, звук rig и звуки уведомлений — идёт через
системный libmpv (libmpv1 в Ubuntu 22.04, libmpv2 в более новых Ubuntu и Debian,
mpv-libs в Fedora); без него приложение запускается, а эти элементы управления
скрыты.
Отдельный сервер
Заголовок раздела «Отдельный сервер»В каждом релизе headless-сервер поставляется и сам по себе — cc_server-<version>-macos-arm64.tar.gz, cc_server-<version>-linux-x64.tar.gz, cc_server-<version>-windows-x64.zip, cc_server-<version>-windows-arm64.zip — вместе с образами cc-server, cc-webapp и cc-remote в GHCR. См. Запустить headless-сервер.
Архив для Linux собран на Ubuntu 22.04, и его встроенные нативные библиотеки линкуются с
glibc 2.35 и libstdc++ из GCC 12, поэтому ему нужен хост не старее этого (Ubuntu 22.04,
Debian 12, Fedora 36 или новее). На более старом дистрибутиве запускайте вместо него
образ cc-server — контейнер приносит собственный userland, так что вашим должно быть
только ядро.
Бэкенд агента
Заголовок раздела «Бэкенд агента»Control Center запускает агентов через адаптеры. Их два, список фиксирован, и они обнаруживаются автоматически — зарегистрировать третий нельзя.
Адаптеру Control Center (built-in) внешний CLI не нужен: цикл агента выполняется
внутри сервера и обращается к провайдерам моделей по HTTP, поэтому он доступен всегда.
Подключите провайдера в разделе Настройки → Сервер → Провайдеры моделей. OpenAI,
Codex, Cursor и Kimi Code предлагают вход в браузере; Anthropic, OpenRouter,
Google Gemini, DeepSeek, Mistral, xAI, z.ai и Moonshot принимают API-ключ. Codex и
Cursor — это провайдеры на этом раннере, а не отдельные CLI. z.ai указан дважды
намеренно: z.ai — это открытая платформа с оплатой по мере использования, счёт по
которой идёт с баланса вашего аккаунта, а z.ai GLM Coding Plan — это подписка. Ключ
аккаунта один и тот же, но план z.ai обслуживается с другого хоста — вставьте ключ
тарифного плана в обычную плитку z.ai, и каждый запрос будет возвращать 429 … "Insufficient balance or no resource package", потому что у плана нет баланса. Подписка
Claude Pro/Max — это не вход в Anthropic API; до этого тарифа добирайтесь через адаптер
Claude Code. А вот что вы можете добавить на этой странице, так это своего
провайдера — любую конечную точку, совместимую с OpenAI или Anthropic (Ollama,
LM Studio, vLLM, приватное развёртывание), — в разделе Свои провайдеры → Добавить
провайдера.
Другой адаптер оборачивает внешний CLI:
- Claude Code (
claude):npm install -g @anthropic-ai/claude-code
Обнаружение проверяет PATH машины, на которой запущен cc_server, — той же машины,
если приложение для компьютера запускает собственный сервер, иначе удалённого хоста.
Установите CLI Claude Code именно там, а не на клиенте. Кнопка Обновить на этой
странице повторяет проверку.
Списки моделей каждый подключённый провайдер отдаёт в реальном времени; models.dev поставляет только метаданные о ценах и размере контекстного окна. См. Управлять адаптерами и моделями.
Аутентификация в GitHub
Заголовок раздела «Аутентификация в GitHub»Учётные данные GitHub принадлежат вам и хранятся на сервере, привязанные к вашему идентификатору пользователя, — а не в связке ключей клиентской ОС. Все устройства, с которых вы входите, используют их же, и ни один другой участник их не прочитает.
Если на сервере зарегистрирован GitHub App (Создать GitHub App), в разделе Настройки → Рабочее пространство → Профиль и идентичность → Хостинг кода доступен пункт Войти через GitHub (это поток с кодом устройства, который выполняет сервер). Иначе вставьте личный токен доступа:
- Классический:
repoиread:org - Fine-grained: Contents и Pull requests (read and write), Checks и Actions (read)
Создайте токен на странице GitHub → Settings → Developer settings → Personal access tokens. Сервер проверяет токен на имя аккаунта в том виде, в каком оно сохранено, поэтому строка может сообщать «Вы вошли как …»; неудачная проверка всё равно сохраняет токен, а опечатка или нехватка области действия проявится позже как неудачный запрос.
Первый шаг онбординга — именно это подключение. Дальше на этой же карточке его можно заменить или удалить. GitLab и Bitbucket используют ту же карточку; см. Подключить хост кода.
Выберите, где запускается сервер
Заголовок раздела «Выберите, где запускается сервер»Control Center — тонкий клиент поверх процесса headless cc_server, который владеет
базой данных и выполняет всю работу; Развёртывание и клиенты объясняет, что это разделение значит для приложения для компьютера, веб-клиента и телефона.
При первом запуске приложение для компьютера спрашивает: «Как запускать Control Center?»
- Запустить в этом приложении: приложение порождает и контролирует
cc_serverна этой машине и общается с ним через loopback. Больше настраивать нечего. Именно этот вариант предполагает быстрый старт. - Подключиться к удалённому экземпляру: укажите приложению
cc_server, работающий в другом месте, вместе с его URL WebSocket, идентификатором устройства и либо ключом сопряжения, либо одноразовым кодом-приглашением. Данными владеет тот сервер; это приложение только отображает их.
Добавить или переключить серверы можно позже в разделе Настройки → Сервер → Подключение и состояние. Переключение переподключается на месте, без перезапуска. Браузер не может запустить сервер, поэтому веб-клиент всегда удалённый; см. Подключиться к удалённому серверу.
Чтобы разместить сервер самостоятельно, следуйте руководству
Запустить headless-сервер. В нём описаны сборка бинарника, создание ключа сопряжения перед первым запуском и флаги --data-dir / --port / --bind.
Проверьте настройку
Заголовок раздела «Проверьте настройку»- В разделе Настройки → Сервер → Провайдеры моделей перечислены оба адаптера.
Строка «Control Center (built-in)» показывает статус «найден» с версией
built-in; строка Claude Code показывает «найден», если его CLI есть вPATHхоста сервера. Если адаптер не найден, нажмите Обновить. - В разделе Настройки → Рабочее пространство → Репозитории перечислены репозитории этого рабочего пространства, а Добавить репозиторий открывает папки хоста сервера.
- В разделе Настройки → Рабочее пространство → Агенты перечислены пять агентов, заведённых при создании вашего первого рабочего пространства. Каждому нужно задать Адаптер и Модель, прежде чем он сможет запуститься.
- Раздел Настройки → Сервер → Диагностика и конфиденциальность сообщает, какие бэкенды песочницы предлагает этот хост, состояние модели эмбеддингов и параметры логирования.
Сборка из исходного кода
Заголовок раздела «Сборка из исходного кода»Нативные библиотеки обязательны, и режима с деградацией нет: отсутствующая библиотека —
это жёсткий сбой при старте, а не более медленный путь. Подготовьте их прежде всего
остального. Каждая команда Flutter и Dart выполняется через fvm, потому что версия SDK
закреплена репозиторием.
git clone https://github.com/SamuelAlev/control-center.gitcd control-centerscripts/natives/build_natives.shfvm flutter pub getfvm flutter pub run build_runner build --delete-conflicting-outputsfvm flutter gen-l10nfvm flutter run -d macos # or -d windows, -d linuxВ macOS для защищённого хранилища (вход через GitHub, Linear и Google) нужно, чтобы приложение было подписано командой Apple — достаточно бесплатного Apple ID; это разовая настройка, описанная в разделе local development signing. Без неё приложение всё равно запускается; недоступно только защищённое хранилище. Windows и Linux в подписи не нуждаются.
Чтобы собрать бинарник headless-сервера, сначала так же подготовьте нативные библиотеки, а затем:
cd apps/cc_serverfvm dart build cliХук сборки копирует в бандл то, что уже лежит в build/natives/, поэтому сборка до
подготовки нативных библиотек даёт бандл без них и сервер, который отказывается
запускаться.
Для веб-клиента используйте scripts/build_web.sh (--target remote для телефонного
PWA). Именно это запускает CI: обычный flutter build web пропускает штамп идентичности
сборки, перегенерацию Web Worker, манифест развёртывания и проверку бюджета ресурсов.