Installera
Control Center kan köras på två sätt: som en webbapp på app.usectrl.dev, utan något att hämta, eller som en skrivbordsapp som du installerar. Det är samma program med samma funktioner. Den enda skillnaden är var servern körs — och webbappen kan inte köra en åt dig.
Använd den i webbläsaren
Avsnitt med rubriken “Använd den i webbläsaren”app.usectrl.dev är det här programmet kompilerat för webbläsaren. Inget att installera, inget att uppdatera. Öppna den och anslut.
Det en webbläsarflik inte kan göra är att vara servern. Varje klient — skrivbord, webb,
telefon — är en tunn renderare ovanpå en headless cc_server som äger databasen och
utför arbetet, så webbappen pratar alltid med en server som du kör. Det finns två sätt
att ge den en:
En server på din egen maskin. Starta cc_server lokalt och peka webbappen mot
ws://localhost:9030. Webbläsare betraktar localhost som betrott, så det här kräver
inget certifikat och ingen tunnel. Det är det snabbaste sättet att prova webbappen, och
din data lämnar aldrig din maskin.
En server på en annan maskin. Eftersom app.usectrl.dev serveras över HTTPS måste en
icke-lokal server vara nåbar över wss:// med ett certifikat som webbläsaren redan litar
på. cc_server vägrar binda en icke-loopback-adress utan TLS, så välj ett av följande:
- ge den ett certifikat direkt, med
--tls-certoch--tls-key - sätt den bakom en TLS-avslutande omvänd proxy och starta den med
--insecure - exponera den via en tunnel eller VPN som tillhandahåller certifikatet — Tailscale, cloudflared eller liknande. Inställningar → Server → Anslutning och status har den inbyggda tunnelaktiveringen under Dela den här servern.
När servern sitter bakom en proxy, NAT eller tunnel ställer du in --public-url på den
adress som klienterna faktiskt ska ringa. Den har den lokala bindningen som standard, så
utan den försöker klienterna med fel värd.
Några saker förblir endast i skrivbordsappen, eftersom de behöver ett inbyggt fönster eller maskinens egna ljudenheter: det flytande fokuslägespillret, operativsystemets aviseringsbubblor (appens egen aviseringscentral fungerar överallt), “starta inspelning och länka” från en kalenderhändelse samt att köra om en mötessammanfattning. Allt annat — ytor, agenter, pull request-granskning, pipelines, ärenden, minne och själva mötesinspelningen — beter sig likadant.
För att ansluta webbappen till en server följer du Anslut till en fjärrserver. För att hosta servern, följer du Kör en headless-server.
Systemkrav för skrivbordsappen
Avsnitt med rubriken “Systemkrav för skrivbordsappen”| Krav | macOS | Windows | Linux |
|---|---|---|---|
| OS-version | macOS 13+ (Ventura) | Windows 10+ | Ubuntu 22.04+ eller en annan distribution med glibc 2.35+ och GTK 3 |
| Arkitektur | Apple Silicon (arm64) | x64, ARM64 | x86_64 |
| Git | Krävs | Krävs | Krävs |
| Diskutrymme | ~200 MB för appen, plus serverns datakatalog | ~200 MB | ~200 MB |
Intel-Macar har ingen färdigbyggd nedladdning. Bygg från källkod i stället.
Serverns datakatalog växer sig större än appen. Vid första starten tvångsinstallerar cc_server de lokala modellerna — textinbäddningar (~90 MB), talardiarisering (~35 MB) och den valda talmodellen (Parakeet TDT v3 som standard, ~600 MB; Whisper-varianterna 198–626 MB) — plus ett inbäddat code-server-bygge, och varje agentsamtal får en copy-on-write-worktree av de repos den arbetar mot (vanlig git worktree i Windows). Tal är inte valfritt: utan ASR-modellen betjänas inte mötes- och dikteringsåtgärder. Den första nedladdningen av talmodellen kräver fortfarande en omstart innan inspelningen tänds.
Skrivbordsappen pekar sin server mot operativsystemets användarspecifika katalog för programstöd. En cc_server som startas för hand utan --data-dir använder <application data>/control-center som standard — ~/Library/Application Support/control-center på macOS, %APPDATA%\control-center i Windows, $XDG_DATA_HOME/control-center (eller ~/.local/share/control-center) i Linux.
Varje artefakt nedan kommer från GitHub Releases.
macOS (Apple Silicon)
Avsnitt med rubriken “macOS (Apple Silicon)”Hämta Control-Center-<version>-arm64.dmg, öppna den och dra Control Center till Program. Bygget är signerat med ett Developer ID och notariserat av Apple, så det öppnas normalt.
Windows (x64, ARM64)
Avsnitt med rubriken “Windows (x64, ARM64)”Control-Center-<version>-x64-setup.exe: en installerare per användare.Control-Center-<version>-windows-x64.zip: en portabel zip.Control-Center-<version>-arm64-setup.exe: en installerare per användare.Control-Center-<version>-windows-arm64.zip: en portabel zip.
Windows använder git worktree för ytcheckouts (ingen copy-on-write).
Linux (x86_64)
Avsnitt med rubriken “Linux (x86_64)”Control-Center-<version>-x86_64.AppImageControl-Center-<version>-linux-x64.tar.gz
AppImage-filen bär uppdateringsinformation, så AppImageUpdate eller appimaged kan uppdatera den till senaste versionen på plats och bara hämta det som ändrats.
Båda byggs på Ubuntu 22.04 och körs på den eller något nyare (Debian 12, Fedora 36 och senare): de länkar glibc 2.35 och libstdc++ från GCC 12 och hämtar GTK 3 från systemet. De få bibliotek som en vanlig skrivbordsinstallation kan sakna följer med inuti dem, så inget annat behöver installeras. Ljud — mötesuppspelning, ljudlandskapet, riggljud och aviseringsklockor — spelas upp via systemets libmpv (libmpv1 på Ubuntu 22.04, libmpv2 på nyare Ubuntu och Debian, mpv-libs på Fedora); utan det startar appen med de kontrollerna dolda.
Fristående server
Avsnitt med rubriken “Fristående server”Varje version innehåller också headless-servern separat — 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 — vid sidan av avbildningarna cc-server, cc-webapp och cc-remote på GHCR. Se Kör en headless-server.
Linux-arkivet byggs på Ubuntu 22.04 och dess medföljande native-bibliotek länkar glibc 2.35 och libstdc++ från GCC 12, så det kräver en värd som är minst lika ny (Ubuntu 22.04, Debian 12, Fedora 36 eller senare). På en äldre distribution kör du cc-server-avbildningen i stället — en container tar med sin egen userland, så bara kärnan behöver vara din.
Agentbackend
Avsnitt med rubriken “Agentbackend”Control Center skickar ut agenter via adapters. Det finns två, listan är fast och de upptäcks automatiskt — det finns inget sätt att registrera ytterligare en.
Adaptern Control Center (built-in) behöver ingen extern CLI: agentloopen körs inuti servern och pratar med modellleverantörer över HTTP, så den är alltid tillgänglig. Anslut en leverantör under Inställningar → Server → Modellleverantörer. OpenAI, Codex, Cursor och Kimi Code erbjuder inloggning i webbläsaren; Anthropic, OpenRouter, Google Gemini, DeepSeek, Mistral, xAI, z.ai och Moonshot tar en API-nyckel. Codex och Cursor är leverantörer på den här köraren, inte separata CLI:n. z.ai listas två gånger med avsikt: z.ai är den öppna plattformen med betalning per användning, som faktureras mot ditt kontosaldo, medan z.ai GLM Coding Plan är abonnemanget. Det är samma kontonyckel, men z.ai betjänar planen från en annan värd — klistrar du in en nyckel för kodningsplanen i den vanliga z.ai-rutan kommer varje begäran tillbaka som 429 … "Insufficient balance or no resource package", eftersom planen inte har något saldo att spendera. Ett Claude Pro/Max-abonnemang är inte en Anthropic API-inloggning; använd det abonnemanget via Claude Code-adaptern i stället. Det du kan lägga till på den sidan är en egen leverantör — vilken OpenAI- eller Anthropic-kompatibel endpoint som helst (Ollama, LM Studio, vLLM, en privat driftsättning) under Egna leverantörer → Lägg till leverantör.
Den andra adaptern omsluter en extern CLI:
- Claude Code (
claude):npm install -g @anthropic-ai/claude-code
Detekteringen söker av PATH på maskinen som kör cc_server — samma maskin när skrivbordsappen kör sin egen server, annars fjärrvärden. Installera Claude Code-CLI:n där, inte på klienten. Knappen Uppdatera på den sidan kör om sökningen.
Modellistor serveras live av varje ansluten leverantör; models.dev bidrar bara med metadata om pris och kontextfönster. Se Hantera adapters och modeller.
GitHub-autentisering
Avsnitt med rubriken “GitHub-autentisering”En GitHub-inloggningsuppgift är din och ligger på servern, knuten till ditt användar-id — inte i klientens operativsystems nyckelring. Varje enhet du loggar in från använder samma, och ingen annan medlem kan läsa den.
Om servern har en registrerad GitHub-app (Skapa GitHub-appen) erbjuder Inställningar → Arbetsyta → Profil och identitet → Kodvärd Logga in med GitHub (ett device flow som servern kör). Annars klistrar du in en personlig åtkomsttoken:
- Klassisk:
repoochread:org - Finkornig: Contents och Pull requests (läs och skriv), Checks och Actions (läs)
Skapa en på GitHub → Settings → Developer settings → Personal access tokens. Servern avsöker token för kontonamnet när den sparas, så raden kan visa “inloggad som …”; en misslyckad avsökning sparar fortfarande token, och ett stavfel eller en saknad behörighet visar sig som en misslyckad begäran senare.
Onboardingens första steg är den här anslutningen. Därefter är samma kort platsen där du byter ut eller rensar den. GitLab och Bitbucket använder samma kort; se Anslut en kodvärd.
Välj var servern körs
Avsnitt med rubriken “Välj var servern körs”Control Center är en tunn klient ovanpå en headless cc_server-process som äger databasen och utför allt arbete; Driftsättning och klienter förklarar vad den uppdelningen betyder för skrivbord, webb och telefon.
Vid första starten frågar skrivbordsappen “Hur ska Control Center köras?”:
- Kör i den här appen: skrivbordsappen startar och övervakar en
cc_serverpå den här maskinen och pratar med den över loopback. Inget annat att konfigurera. Det är den konfiguration som Snabbstart utgår från. - Anslut till en fjärrinstans: peka skrivbordsappen mot en
cc_serversom körs någon annanstans med dess WebSocket-URL, ett enhets-id och antingen en parkopplingsnyckel eller en engångsinbjudningskod. Den servern äger datan; den här skrivbordsappen visar den bara.
Lägg till eller byt server senare under Inställningar → Server → Anslutning och status. Att byta återansluter på plats — ingen omstart. En webbläsare kan inte köra en server, så webbklienten är alltid fjärransluten; se Anslut till en fjärrserver.
För att hosta en server själv följer du Kör en headless-server. Den täcker hur du bygger binärfilen, skapar en parkopplingsnyckel före första starten och flaggorna --data-dir / --port / --bind.
Verifiera din konfiguration
Avsnitt med rubriken “Verifiera din konfiguration”- Inställningar → Server → Modellleverantörer listar båda adaptrarna. “Control Center (built-in)” visas som hittad med versionen
built-in; Claude Code visas som hittad om dess CLI finns iPATHpå servervärden. Tryck på Uppdatera om den saknas. - Inställningar → Arbetsyta → Arkiv listar den här arbetsytans repos, och Lägg till arkiv bläddrar i servervärdens mappar.
- Inställningar → Arbetsyta → Agenter listar de fem agenter som din första arbetsyta seedade. Var och en behöver en Adapter och en Modell angivna innan den kan köra.
- Inställningar → Server → Diagnostik och integritet rapporterar vilka sandlådebackends den här värden erbjuder, inbäddningsmodellens status och loggning.
Bygg från källkod
Avsnitt med rubriken “Bygg från källkod”Native-bibliotek krävs och det finns inget degraderat läge: ett saknat bibliotek är ett hårt startfel, inte en långsammare väg. Lägg dem på plats före allt annat. Varje Flutter- och Dart-kommando går via fvm, eftersom SDK-versionen är låst av repot.
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 linuxPå macOS kräver säker lagring (inloggning med GitHub, Linear och Google) att appen signeras av ett Apple-team — ett kostnadsfritt Apple-ID räcker, och det är en engångsinställning som beskrivs under signering för lokal utveckling. Utan den startar appen fortfarande; bara säker lagring är otillgänglig. Windows och Linux kräver ingen signering.
För att bygga headless-serverns binärfil lägger du först native-biblioteken på plats på samma sätt och kör sedan:
cd apps/cc_serverfvm dart build cliByggkroken kopierar allt som redan finns i build/natives/ in i paketet, så att bygga innan biblioteken lagts på plats ger ett paket utan native-bibliotek och en server som vägrar starta.
För webbklienten använder du scripts/build_web.sh (--target remote för telefonens PWA). Det är vad CI kör: ett vanligt flutter build web hoppar över byggidentitetsstämpeln, regenereringen av Web Worker, driftsättningsmanifestet och kontrollen av tillgångsbudgeten.