Перейти к содержимому

Установка

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.

Скачайте Control-Center-<version>-arm64.dmg, откройте его и перетащите Control Center в папку «Программы». Сборка подписана Developer ID и нотаризована Apple, поэтому открывается обычным образом.

  • 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).

  • Control-Center-<version>-x86_64.AppImage
  • Control-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 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.

  1. В разделе Настройки → Сервер → Провайдеры моделей перечислены оба адаптера. Строка «Control Center (built-in)» показывает статус «найден» с версией built-in; строка Claude Code показывает «найден», если его CLI есть в PATH хоста сервера. Если адаптер не найден, нажмите Обновить.
  2. В разделе Настройки → Рабочее пространство → Репозитории перечислены репозитории этого рабочего пространства, а Добавить репозиторий открывает папки хоста сервера.
  3. В разделе Настройки → Рабочее пространство → Агенты перечислены пять агентов, заведённых при создании вашего первого рабочего пространства. Каждому нужно задать Адаптер и Модель, прежде чем он сможет запуститься.
  4. Раздел Настройки → Сервер → Диагностика и конфиденциальность сообщает, какие бэкенды песочницы предлагает этот хост, состояние модели эмбеддингов и параметры логирования.

Нативные библиотеки обязательны, и режима с деградацией нет: отсутствующая библиотека — это жёсткий сбой при старте, а не более медленный путь. Подготовьте их прежде всего остального. Каждая команда Flutter и Dart выполняется через fvm, потому что версия SDK закреплена репозиторием.

Окно терминала
git clone https://github.com/SamuelAlev/control-center.git
cd control-center
scripts/natives/build_natives.sh
fvm flutter pub get
fvm flutter pub run build_runner build --delete-conflicting-outputs
fvm flutter gen-l10n
fvm 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_server
fvm dart build cli

Хук сборки копирует в бандл то, что уже лежит в build/natives/, поэтому сборка до подготовки нативных библиотек даёт бандл без них и сервер, который отказывается запускаться.

Для веб-клиента используйте scripts/build_web.sh (--target remote для телефонного PWA). Именно это запускает CI: обычный flutter build web пропускает штамп идентичности сборки, перегенерацию Web Worker, манифест развёртывания и проверку бюджета ресурсов.