Installeren
Control Center werkt op twee manieren: als webapp op app.usectrl.dev, zonder iets te downloaden, of als desktopapp die je installeert. Het is dezelfde toepassing met dezelfde functies. Het enige verschil is waar de server draait — en de webapp kan er geen voor je draaien.
Gebruik het in je browser
Sectie getiteld “Gebruik het in je browser”app.usectrl.dev is deze toepassing, gecompileerd voor de browser. Niets te installeren, niets bij te werken. Open het en maak verbinding.
Wat een browsertabblad niet kan, is zelf de server zijn. Elke client — desktop, web,
telefoon — is een dunne renderer boven op een headless cc_server die de database bezit
en het werk doet, dus de webapp praat altijd met een server die jij draait. Twee manieren
om er een te krijgen:
Een server op je eigen machine. Start cc_server lokaal en richt de webapp op
ws://localhost:9030. Browsers beschouwen localhost als vertrouwd, dus dit heeft geen
certificaat en geen tunnel nodig. Het is de snelste manier om de webapp uit te proberen,
en je gegevens verlaten je machine nooit.
Een server op een andere machine. Omdat app.usectrl.dev via HTTPS wordt
aangeboden, moet een niet-lokale server bereikbaar zijn via wss:// met een certificaat
dat de browser al vertrouwt. cc_server weigert een niet-loopbackadres te binden zonder
TLS, dus kies een van deze:
- geef hem rechtstreeks een certificaat, met
--tls-certen--tls-key - zet hem achter een reverse proxy die TLS afhandelt en start hem met
--insecure - stel hem beschikbaar via een tunnel of VPN die het certificaat levert — Tailscale, cloudflared of iets vergelijkbaars. Instellingen → Server → Verbinding en status heeft de ingebouwde tunneloptie onder Deze server delen.
Wanneer de server achter een proxy, NAT of tunnel staat, stel je --public-url in op het
adres dat clients daadwerkelijk moeten aanspreken. De standaardwaarde is de lokale bind,
dus zonder deze instelling proberen clients de verkeerde host.
Een paar dingen blijven alleen op de desktop, omdat ze een native venster of de audioapparaten van de machine zelf nodig hebben: de zwevende focusmodus-pil, toastmeldingen van het OS (het meldingencentrum in de app werkt overal), ‘opnemen en koppelen’ vanuit een agenda-afspraak, en het opnieuw uitvoeren van een vergadersamenvatting. Al het andere — ruimtes, agenten, pull-requestreviews, pipelines, tickets, geheugen en het opnemen van vergaderingen zelf — gedraagt zich hetzelfde.
Volg Verbinden met een externe server om de webapp met een server te verbinden. Volg Een headless server draaien om zelf een server te hosten.
Systeemvereisten voor de desktop
Sectie getiteld “Systeemvereisten voor de desktop”| Vereiste | macOS | Windows | Linux |
|---|---|---|---|
| OS-versie | macOS 13+ (Ventura) | Windows 10+ | Ubuntu 22.04+ of een andere distro met glibc 2.35+ en GTK 3 |
| Architectuur | Apple Silicon (arm64) | x64, ARM64 | x86_64 |
| Git | Vereist | Vereist | Vereist |
| Schijfruimte | ~200 MB voor de app, plus de datadirectory van de server | ~200 MB | ~200 MB |
Voor Intel-Macs is er geen voorgebouwde download. Bouw vanaf de broncode in plaats daarvan.
De datadirectory van de server groeit harder dan de app. Bij de eerste start
force-installeert cc_server de modellen op het apparaat — tekstembeddings (~90 MB),
sprekerdiarisatie (~35 MB) en het geselecteerde spraakmodel (standaard Parakeet TDT v3,
~600 MB; Whisper-varianten 198–626 MB) — plus een ingebouwde code-server-build, en elk
agentgesprek krijgt een copy-on-write-worktree van de repo’s waaraan het werkt (op
Windows een gewone git worktree). Spraak is niet optioneel: zonder het ASR-model worden
vergader- en dicteerbewerkingen niet aangeboden. De eerste download van het spraakmodel
vraagt nog één herstart voordat opnemen gaat werken.
De desktop laat zijn server naar de application-supportdirectory per gebruiker van het OS
wijzen. Een cc_server die je handmatig start zonder --data-dir gebruikt standaard
<application data>/control-center — ~/Library/Application Support/control-center op
macOS, %APPDATA%\control-center op Windows, $XDG_DATA_HOME/control-center (of
~/.local/share/control-center) op Linux.
Downloaden
Sectie getiteld “Downloaden”Elk artefact hieronder komt uit GitHub Releases.
macOS (Apple Silicon)
Sectie getiteld “macOS (Apple Silicon)”Download Control-Center-<version>-arm64.dmg, open het en sleep Control Center naar
Programma’s. De build is ondertekend met een Developer ID en door Apple genotariseerd,
dus hij opent gewoon.
Windows (x64, ARM64)
Sectie getiteld “Windows (x64, ARM64)”Control-Center-<version>-x64-setup.exe: een installatieprogramma per gebruiker.Control-Center-<version>-windows-x64.zip: een draagbare zip.Control-Center-<version>-arm64-setup.exe: een installatieprogramma per gebruiker.Control-Center-<version>-windows-arm64.zip: een draagbare zip.
Windows gebruikt git worktree voor de checkouts van ruimtes (geen copy-on-write).
Linux (x86_64)
Sectie getiteld “Linux (x86_64)”Control-Center-<version>-x86_64.AppImageControl-Center-<version>-linux-x64.tar.gz
De AppImage bevat update-informatie, dus AppImageUpdate of appimaged kan hem ter plaatse naar de nieuwste release tillen en downloadt alleen wat is gewijzigd.
Beide zijn gebouwd op Ubuntu 22.04 en draaien daarop of op alles wat nieuwer is (Debian 12, Fedora 36 en later): ze linken naar glibc 2.35 en de libstdc++ van GCC 12 en halen GTK 3 uit het systeem. De paar bibliotheken die een standaarddesktop mist, reizen erin mee, dus er hoeft niets anders te worden geïnstalleerd. Geluid — het afspelen van vergaderingen, het klanklandschap, rig-audio en meldingsgeluiden — gaat via de libmpv van het systeem (libmpv1 op Ubuntu 22.04, libmpv2 op nieuwere Ubuntu en Debian, mpv-libs op Fedora); zonder die bibliotheek start de app met die bedieningselementen verborgen.
Losstaande server
Sectie getiteld “Losstaande server”Elke release bevat ook de headless server apart — 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 — naast de images cc-server, cc-webapp en cc-remote op GHCR. Zie Een headless server draaien.
Het Linux-archief is gebouwd op Ubuntu 22.04 en de meegeleverde native bibliotheken linken naar glibc 2.35 en de libstdc++ van GCC 12, dus het vereist een host die minstens zo nieuw is (Ubuntu 22.04, Debian 12, Fedora 36 of later). Draai op een oudere distributie in plaats daarvan de cc-server-image — een container brengt zijn eigen userland mee, dus alleen de kernel hoeft van jou te zijn.
Agentbackend
Sectie getiteld “Agentbackend”Control Center dispatcht agenten via adapters. Er zijn er twee, de lijst ligt vast en ze worden automatisch gedetecteerd — je kunt er geen derde registreren.
De adapter Control Center (built-in) heeft geen externe CLI nodig: de agentloop draait in de server en praat via HTTP met modelaanbieders, dus hij is altijd beschikbaar. Verbind een provider onder Instellingen → Server → Modelaanbieders. OpenAI, Codex, Cursor en Kimi Code bieden inloggen via de browser; Anthropic, OpenRouter, Google Gemini, DeepSeek, Mistral, xAI, z.ai en Moonshot vragen om een API-sleutel. Codex en Cursor zijn providers op deze runner, geen aparte CLI’s. z.ai staat met opzet twee keer in de lijst: z.ai is het open platform met betalen naar gebruik, afgerekend op het saldo van je account, terwijl z.ai GLM Coding Plan het abonnement is. Het is dezelfde accountsleutel, maar z.ai bedient het abonnement vanaf een andere host — plak je een key van het Coding Plan in de gewone z.ai-tegel, dan komt elk verzoek terug met 429 … "Insufficient balance or no resource package", omdat het abonnement geen saldo heeft om te besteden. Een Claude Pro/Max-abonnement is geen Anthropic API-login; bereik dat abonnement via de Claude Code-adapter. Wat je op die pagina wel kunt toevoegen is een aangepaste provider — elk OpenAI- of Anthropic-compatibel endpoint (Ollama, LM Studio, vLLM, een private deployment) onder Aangepaste providers → Provider toevoegen.
De andere adapter omhult een externe CLI:
- Claude Code (
claude):npm install -g @anthropic-ai/claude-code
Detectie doorzoekt de PATH van de machine die cc_server draait — dezelfde machine wanneer de desktop zijn eigen server draait, anders de externe host. Installeer de Claude Code-CLI daar, niet op de client. Met de knop Vernieuwen op die pagina wordt de detectie opnieuw uitgevoerd.
Modellenlijsten worden live geleverd door elke verbonden provider; models.dev levert alleen prijs- en contextvenster-metadata. Zie Adapters en modellen beheren.
GitHub-authenticatie
Sectie getiteld “GitHub-authenticatie”Een GitHub-inloggegeven is van jou en staat op de server, gekoppeld aan je gebruikers-id — niet in de sleutelhanger van het besturingssysteem van de client. Elk apparaat waarmee je inlogt gebruikt hetzelfde gegeven, en geen ander lid kan het lezen.
Als er een GitHub App op de server is geregistreerd (De GitHub App maken), biedt Instellingen → Werkruimte → Profiel en identiteit → Codehosting de optie Inloggen met GitHub (een device flow die de server uitvoert). Plak anders een persoonlijk toegangstoken:
- Klassiek:
repoenread:org - Fijnmazig: Contents en Pull requests (lezen en schrijven), Checks en Actions (lezen)
Maak er een aan op GitHub → Settings → Developer settings → Personal access tokens. De server controleert de token op de accountnaam op het moment dat hij wordt opgeslagen, zodat de rij ‘ingelogd als …’ kan tonen; een mislukte controle slaat de token alsnog op, en een typefout of ontbrekende scope blijkt later uit een mislukt verzoek.
De eerste stap van de onboarding is deze verbinding. Daarna vervang of wis je hem op dezelfde kaart. GitLab en Bitbucket gebruiken dezelfde kaart; zie Een codehost verbinden.
Kies waar de server draait
Sectie getiteld “Kies waar de server draait”Control Center is een dunne client boven op een headless cc_server-proces dat de database bezit en al het werk doet; Deployment en clients legt uit wat die splitsing betekent voor desktop, web en telefoon.
Bij de eerste start vraagt de desktop “Hoe moet Control Center draaien?”:
- In deze app uitvoeren: de desktop start en bewaakt een
cc_serverop deze machine en praat er via loopback mee. Niets anders in te stellen. Dit is de opzet die de snelstart veronderstelt. - Verbinden met een externe instantie: richt de desktop op een
cc_serverdie elders draait, met zijn WebSocket-URL, een apparaat-id en ofwel een koppelingssleutel ofwel een eenmalige uitnodigingscode. Die server bezit de gegevens; deze desktop toont ze alleen.
Voeg later servers toe of wissel ertussen onder Instellingen → Server → Verbinding en status. Wisselen maakt ter plaatse opnieuw verbinding — geen herstart. Een browser kan geen server draaien, dus de webclient is altijd extern; zie Verbinden met een externe server.
Volg Een headless server draaien om zelf een server te hosten. Die gids behandelt het bouwen van de binary, het aanmaken van een koppelingssleutel vóór de eerste start en de flags --data-dir / --port / --bind.
Controleer je installatie
Sectie getiteld “Controleer je installatie”- Instellingen → Server → Modelaanbieders toont beide adapters. ‘Control Center (built-in)’ verschijnt als gevonden met versie
built-in; Claude Code verschijnt als gevonden als zijn CLI in dePATHvan de serverhost staat. Druk op Vernieuwen als hij ontbreekt. - Instellingen → Werkruimte → Repository’s toont de repo’s van deze werkruimte, en Repository toevoegen bladert door de mappen van de serverhost.
- Instellingen → Werkruimte → Agenten toont de vijf agenten die je eerste werkruimte heeft geseed. Elke agent heeft een ingestelde Adapter en een ingesteld Model nodig voordat hij kan draaien.
- Instellingen → Server → Diagnose en privacy rapporteert de sandboxbackends die deze host biedt, de status van het embeddingmodel en de logging.
Bouwen vanaf de broncode
Sectie getiteld “Bouwen vanaf de broncode”Native bibliotheken zijn verplicht en er is geen degraded mode: een ontbrekende bibliotheek is een harde opstartfout, geen langzamer pad. Zet ze als eerste klaar. Elk Flutter- en Dart-commando loopt via fvm, omdat de SDK-versie door de repo is vastgezet.
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 linuxOp macOS vereist veilige opslag (inloggen bij GitHub, Linear en Google) dat de app door een Apple-team is ondertekend — een gratis Apple ID volstaat, en het is een eenmalige instelling die wordt beschreven onder ondertekening voor lokale ontwikkeling. Zonder die ondertekening start de app nog steeds; alleen veilige opslag is dan niet beschikbaar. Windows en Linux hebben geen ondertekening nodig.
Zet de natives op dezelfde manier klaar voordat je de headless serverbinary bouwt, en dan:
cd apps/cc_serverfvm dart build cliDe buildhook neemt alles wat al in build/natives/ staat op in de bundle, dus bouwen vóór het klaarzetten levert een bundle zonder natives op en een server die weigert te starten.
Gebruik voor de webclient scripts/build_web.sh (--target remote voor de telefoon-PWA). Dat is wat CI draait: een gewone flutter build web slaat de build-identity-stempel, de regeneratie van de Web Worker, het deploy-manifest en de asset-budgetcontrole over.