Installer
Control Center s’exécute de deux façons : comme application Web à l’adresse app.usectrl.dev, sans rien à télécharger, ou comme application de bureau que vous installez. Il s’agit de la même application, avec les mêmes fonctionnalités. La seule différence est l’endroit où s’exécute le serveur — et l’application Web ne peut pas en exécuter un pour vous.
L’utiliser dans votre navigateur
Section intitulée “L’utiliser dans votre navigateur”app.usectrl.dev est cette application compilée pour le navigateur. Rien à installer, rien à mettre à jour. Ouvrez-la et connectez-vous.
Ce qu’un onglet de navigateur ne peut pas faire, c’est être le serveur. Chaque client —
bureau, Web, téléphone — est un simple moteur de rendu au-dessus d’un cc_server sans
interface qui possède la base de données et fait le travail. L’application Web parle donc
toujours à un serveur que vous exécutez. Deux façons de lui en fournir un :
Un serveur sur votre propre machine. Démarrez cc_server localement et pointez
l’application Web vers ws://localhost:9030. Les navigateurs considèrent localhost
comme fiable : aucun certificat ni tunnel n’est nécessaire. C’est la façon la plus rapide
d’essayer l’application Web, et vos données ne quittent jamais votre machine.
Un serveur sur une autre machine. Comme app.usectrl.dev est servi par HTTPS, un
serveur non local doit être joignable par wss:// avec un certificat auquel le navigateur
fait déjà confiance. cc_server refuse de se lier à une adresse autre que la boucle
locale sans TLS ; choisissez donc l’une des options suivantes :
- lui fournir directement un certificat, avec
--tls-certet--tls-key - le placer derrière un proxy inverse qui termine TLS et le démarrer avec
--insecure - l’exposer par un tunnel ou un VPN qui fournit le certificat — Tailscale, cloudflared ou autre. Paramètres → Serveur → Connexion et état propose l’option intégrée d’adhésion au tunnel sous Partager ce serveur.
Quand le serveur se trouve derrière un proxy, un NAT ou un tunnel, définissez
--public-url sur l’adresse que les clients doivent réellement joindre. La valeur par
défaut est la liaison locale ; sans cette option, les clients essaient le mauvais hôte.
Quelques éléments restent réservés au bureau, parce qu’ils ont besoin d’une fenêtre native ou des périphériques audio de la machine : la pastille flottante du mode concentration, les notifications système éphémères (le centre de notifications intégré fonctionne partout), “Enregistrer et lier” à partir d’un événement de calendrier, et le fait de relancer le résumé d’une réunion. Tout le reste — les espaces, les agents, la révision des demandes de tirage, les pipelines, les tickets, la mémoire et l’enregistrement des réunions lui-même — se comporte de la même façon.
Pour connecter l’application Web à un serveur, suivez Se connecter à un serveur distant. Pour héberger le serveur, suivez Exécuter un serveur sans interface.
Configuration système requise pour le bureau
Section intitulée “Configuration système requise pour le bureau”| Exigence | macOS | Windows | Linux |
|---|---|---|---|
| Version du système | macOS 13+ (Ventura) | Windows 10+ | Ubuntu 22.04+ ou une autre distribution avec glibc 2.35+ et GTK 3 |
| Architecture | Apple Silicon (arm64) | x64, ARM64 | x86_64 |
| Git | Requis | Requis | Requis |
| Espace disque | ~200 MB pour l’application, plus le répertoire de données du serveur | ~200 MB | ~200 MB |
Les Mac Intel n’ont pas de téléchargement précompilé. Compilez à partir du code source à la place.
Le répertoire de données du serveur dépasse l’application en taille. À son premier
démarrage, cc_server installe d’office les modèles locaux — les embeddings de texte
(~90 MB), la diarisation des locuteurs (~35 MB) et le modèle vocal sélectionné (Parakeet
TDT v3 par défaut, ~600 MB ; les variantes Whisper de 198–626 MB) — plus une version
intégrée de code-server, et chaque conversation d’agent obtient un arbre de travail en
copie sur écriture des dépôts sur lesquels elle travaille (un simple git worktree sous
Windows). La reconnaissance vocale n’est pas facultative : sans le modèle ASR, les
opérations de réunion et de dictée ne sont pas prises en charge. Le premier téléchargement
du modèle vocal exige tout de même un redémarrage avant que l’enregistrement soit
disponible.
Le bureau pointe son serveur vers le répertoire de prise en charge des applications par
utilisateur du système d’exploitation. Un cc_server démarré à la main sans --data-dir
utilise par défaut <application data>/control-center — ~/Library/Application Support/control-center sous macOS, %APPDATA%\control-center sous Windows, $XDG_DATA_HOME/control-center (ou ~/.local/share/control-center) sous Linux.
Téléchargement
Section intitulée “Téléchargement”Chaque artefact ci-dessous provient de GitHub Releases.
macOS (Apple Silicon)
Section intitulée “macOS (Apple Silicon)”Téléchargez Control-Center-<version>-arm64.dmg, ouvrez-le et glissez Control Center dans
Applications. La version est signée avec un Developer ID et notarisée par Apple ; elle
s’ouvre donc normalement.
Windows (x64, ARM64)
Section intitulée “Windows (x64, ARM64)”Control-Center-<version>-x64-setup.exe: un programme d’installation par utilisateur.Control-Center-<version>-windows-x64.zip: une archive ZIP portable.Control-Center-<version>-arm64-setup.exe: un programme d’installation par utilisateur.Control-Center-<version>-windows-arm64.zip: une archive ZIP portable.
Windows utilise git worktree pour les extractions d’espaces (aucune copie sur écriture).
Linux (x86_64)
Section intitulée “Linux (x86_64)”Control-Center-<version>-x86_64.AppImageControl-Center-<version>-linux-x64.tar.gz
L’AppImage contient de l’information de mise à jour, de sorte qu’AppImageUpdate ou appimaged peut la porter à la dernière version sur place, en ne téléchargeant que ce qui a changé.
Les deux sont compilés sur Ubuntu 22.04 et s’exécutent sur cette version ou une plus
récente (Debian 12, Fedora 36 et versions ultérieures) : ils se lient à glibc 2.35 et à la
libstdc++ de GCC 12, et prennent GTK 3 du système. Les quelques bibliothèques qui peuvent
manquer à un bureau standard voyagent à l’intérieur, donc rien d’autre n’est à installer.
Le son — la lecture des réunions, les ambiances sonores, l’audio des rigs et les carillons
de notification — passe par la libmpv du système (libmpv1 sur Ubuntu 22.04, libmpv2
sur les Ubuntu et Debian plus récents, mpv-libs sur Fedora) ; sans elle, l’application
démarre avec ces commandes masquées.
Serveur autonome
Section intitulée “Serveur autonome”Chaque version comprend aussi le serveur sans interface livré séparément —
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 — en plus des images cc-server, cc-webapp et
cc-remote sur GHCR. Consultez Exécuter un serveur sans interface.
L’archive Linux est compilée sur Ubuntu 22.04 et ses bibliothèques natives incluses se
lient à glibc 2.35 et à la libstdc++ de GCC 12 ; elle exige donc un hôte au moins aussi
récent (Ubuntu 22.04, Debian 12, Fedora 36 ou une version ultérieure). Sur une
distribution plus ancienne, exécutez plutôt l’image cc-server — un conteneur apporte son
propre espace utilisateur, donc seul le noyau doit être le vôtre.
Backend d’agent
Section intitulée “Backend d’agent”Control Center achemine les agents par l’entremise d’adaptateurs. Il y en a deux, la liste est fixe et ils sont détectés automatiquement — il n’existe aucun moyen d’en enregistrer un autre.
L’adaptateur Control Center (built-in) n’exige aucune CLI externe : la boucle d’agent
s’exécute à l’intérieur du serveur et communique avec les fournisseurs de modèles par
HTTP, il est donc toujours disponible. Connectez un fournisseur sous Paramètres →
Serveur → Fournisseurs de modèles. OpenAI, Codex, Cursor et Kimi Code offrent une
connexion par le navigateur ; Anthropic, OpenRouter, Google Gemini, DeepSeek,
Mistral, xAI, z.ai et Moonshot prennent une clé API. Codex et Cursor sont des fournisseurs
de cet exécuteur, et non des CLI distinctes. z.ai est listé deux fois à dessein :
z.ai est la plateforme ouverte à facturation à l’usage, facturée sur le solde de votre
compte, tandis que z.ai GLM Coding Plan est l’abonnement. Il s’agit de la même clé de
compte, mais z.ai sert le forfait depuis un autre hôte — collez une clé de forfait de
codage dans la tuile z.ai ordinaire et chaque requête revient avec 429 … "Insufficient balance or no resource package", parce que le forfait n’a aucun solde à dépenser. Un abonnement Claude Pro/Max n’est pas une connexion à l’API Anthropic ; accédez plutôt à ce forfait par l’adaptateur Claude Code. Ce que vous pouvez ajouter sur cette page, c’est un fournisseur personnalisé — tout point de terminaison compatible avec OpenAI ou Anthropic (Ollama, LM Studio, vLLM, un déploiement privé) sous Fournisseurs personnalisés → Ajouter un fournisseur.
L’autre adaptateur encapsule une CLI externe :
- Claude Code (
claude) :npm install -g @anthropic-ai/claude-code
La détection sonde le PATH de la machine qui exécute cc_server — la même machine quand
le bureau exécute son propre serveur, l’hôte distant autrement. Installez-y la CLI Claude
Code, et non sur le client. Le bouton Actualiser de cette page relance la détection.
Les listes de modèles sont servies en direct par chaque fournisseur connecté ; models.dev ne fournit que les métadonnées de prix et de fenêtre de contexte. Consultez Gérer les adaptateurs et les modèles.
Authentification GitHub
Section intitulée “Authentification GitHub”Un identifiant GitHub est le vôtre et réside sur le serveur, indexé par votre identifiant d’utilisateur — et non dans le trousseau du système d’exploitation du client. Chaque appareil depuis lequel vous vous connectez utilise le même, et aucun autre membre ne peut le lire.
Si le serveur a une GitHub App enregistrée (Créer la GitHub App), Paramètres → Espace de travail → Profil et identité → Hébergement de code propose Se connecter avec GitHub (un flux d’appareil exécuté par le serveur). Sinon, collez un jeton d’accès personnel :
- Classique :
repoetread:org - À granularité fine : Contents et Pull requests (lecture et écriture), Checks et Actions (lecture)
Créez-en un dans GitHub → Settings → Developer settings → Personal access tokens. Le serveur vérifie le jeton pour obtenir le nom du compte tel qu’il est stocké, de sorte que la ligne peut indiquer “Connecté en tant que …” ; une vérification échouée enregistre quand même le jeton, et une faute de frappe ou une portée manquante se manifestera plus tard par une requête échouée.
La première étape de l’intégration est cette connexion. Par la suite, la même carte sert à la remplacer ou à l’effacer. GitLab et Bitbucket utilisent la même carte ; consultez Connecter un hébergeur de code.
Choisir où s’exécute le serveur
Section intitulée “Choisir où s’exécute le serveur”Control Center est un client léger au-dessus d’un processus cc_server sans interface qui
possède la base de données et fait tout le travail ; Déploiement et clients explique ce que cette séparation implique pour le bureau, le Web et le téléphone.
Au premier lancement, le bureau demande “Comment exécuter Control Center ?” :
- Exécuter dans cette application : le bureau lance et supervise un
cc_serversur cette machine et communique avec lui par la boucle locale. Rien d’autre à configurer. C’est la configuration que suppose le démarrage express. - Se connecter à une instance distante : pointez le bureau vers un
cc_serverexécuté ailleurs avec son URL WebSocket, un identifiant d’appareil et, au choix, une clé d’appairage ou un code d’invitation à usage unique. Ce serveur possède les données ; ce bureau ne fait que les afficher.
Ajoutez ou changez de serveur plus tard sous Paramètres → Serveur → Connexion et état. Le changement reconnecte sur place — aucun redémarrage. Un navigateur ne peut pas exécuter de serveur, donc le client Web est toujours distant ; consultez Se connecter à un serveur distant.
Pour héberger vous-même un serveur, suivez Exécuter un serveur sans interface. Il traite de la compilation du binaire, de la création d’une clé d’appairage avant le premier démarrage et des options --data-dir / --port / --bind.
Vérifier votre configuration
Section intitulée “Vérifier votre configuration”- Paramètres → Serveur → Fournisseurs de modèles liste les deux adaptateurs. “Control Center (built-in)” est indiqué comme trouvé, avec la version
built-in; Claude Code est indiqué comme trouvé si sa CLI se trouve dans lePATHde l’hôte du serveur. Appuyez sur Actualiser s’il est absent. - Paramètres → Espace de travail → Dépôts liste les dépôts de cet espace de travail, et Ajouter un dépôt parcourt les dossiers de l’hôte du serveur.
- Paramètres → Espace de travail → Agents liste les cinq agents créés au départ par votre premier espace de travail. Chacun doit avoir un Adaptateur et un Modèle définis avant de pouvoir s’exécuter.
- Paramètres → Serveur → Diagnostics et confidentialité indique les backends de bac à sable offerts par cet hôte, l’état du modèle d’embedding et la journalisation.
Compiler à partir du code source
Section intitulée “Compiler à partir du code source”Les bibliothèques natives sont obligatoires et il n’existe pas de mode dégradé : une
bibliothèque manquante est un échec de démarrage définitif, et non un chemin plus lent.
Préparez-les avant tout le reste. Chaque commande Flutter et Dart passe par fvm, parce
que la version du SDK est épinglée par le dépôt.
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 linuxSous macOS, le stockage sécurisé (connexion à GitHub, Linear et Google) exige que l’application soit signée par une équipe Apple — un identifiant Apple gratuit suffit, et il s’agit d’une configuration unique décrite sous signature pour le développement local. Sans cela, l’application démarre quand même ; seul le stockage sécurisé est indisponible. Windows et Linux n’exigent aucune signature.
Pour compiler le binaire du serveur sans interface, préparez d’abord les bibliothèques natives de la même façon, puis :
cd apps/cc_serverfvm dart build cliLe crochet de compilation copie tout ce qui se trouve déjà dans build/natives/ dans le
paquet ; compiler avant de préparer les bibliothèques natives produit donc un paquet sans
natives et un serveur qui refuse de démarrer.
Pour le client Web, utilisez scripts/build_web.sh (--target remote pour la PWA du
téléphone). C’est ce que la CI exécute : un simple flutter build web saute l’estampille
d’identité de compilation, la régénération des Web Workers, le manifeste de déploiement et
la vérification du budget des ressources.