CLI cc_server
Fiecare setare a procesului acceptă un flag de linie de comandă sau o variabilă de mediu; flagul are prioritate, apoi mediul, apoi valoarea implicită. Credențialele de la terți sunt excepția — vezi mai jos.
Elemente de bază
Secțiune intitulată „Elemente de bază”| Flag | Variabilă | Implicit | Semnificație |
|---|---|---|---|
--data-dir |
CC_SERVER_DATA_DIR |
directorul de date de aplicație per utilizator al sistemului de operare (vezi mai jos) | Baze de date, secrete, modele și conținut media din cache |
--port |
CC_SERVER_PORT |
9030 |
Port TCP (0 = efemer) |
--bind |
CC_SERVER_BIND |
loopback |
loopback, sau any/all/0.0.0.0 pentru fiecare interfață (necesită TLS sau --insecure) |
--repo-roots |
CC_SERVER_REPO_ROOTS |
directorul home al utilizatorului serverului | Directoare de bază separate prin virgulă, în care un client poate naviga la înregistrarea unui repo. Navigarea deasupra unei rădăcini este refuzată |
--log-level |
CC_SERVER_LOG_LEVEL |
warning |
debug, info, warning sau error. Liniile de pornire și de disponibilitate se afișează întotdeauna |
--server-name |
CC_SERVER_NAME |
numele de gazdă al mașinii | Numele afișat în selectoare, în detectare și pe suprafețele de asociere |
Accesibilitate și TLS
Secțiune intitulată „Accesibilitate și TLS”| Flag | Variabilă | Implicit | Semnificație |
|---|---|---|---|
--tls-cert |
CC_SERVER_TLS_CERT |
nesetat | Lanț de certificate PEM. Servește wss:// în proces când este setat împreună cu cheia |
--tls-key |
CC_SERVER_TLS_KEY |
nesetat | Cheie privată PEM corespunzătoare certificatului |
--insecure |
CC_SERVER_INSECURE |
oprit | Permite o legare în clar în afara loopback. Doar în spatele unui proxy care termină TLS, într-o rețea de încredere; ignorat când TLS este configurat |
--public-url |
CC_SERVER_PUBLIC_URL |
derivată din legarea configurată | URL-ul RPC pe care acest server îl anunță clienților asociați. Setează-l explicit în spatele unui proxy, NAT sau tunel — valoarea implicită este doar o presupunere bazată pe legarea locală |
--allowed-origins |
CC_SERVER_ALLOWED_ORIGINS |
https://app.usectrl.dev |
Origini de browser separate prin virgulă, cărora li se permite să apeleze /rpc cross-origin. Loopback și clienții nativi sunt întotdeauna permise |
--web-client-url |
CC_SERVER_WEB_CLIENT_URL |
nesetat | Originea clientului web găzduit la care revin callback-urile de autentificare unică |
--signaling-url |
CC_SERVER_SIGNALING_URL |
wss://signaling.usectrl.dev |
Brokerul de releu la care se alătură acest server, ca un telefon să îl poată atinge fără o cale directă |
--mdns |
CC_SERVER_MDNS |
auto |
Anunțare în LAN: auto (doar când este legat dincolo de loopback), on, off. Detectarea anunță doar existența — alăturarea necesită totuși asociere |
--tunnel |
CC_SERVER_TUNNEL |
off |
Furnizor de tunel administrat: off, cloudflared, ngrok, tailscale. Expunerea publică necesită activare explicită |
--tunnel-binary |
CC_SERVER_TUNNEL_BINARY |
rezolvat din PATH |
Calea explicită a binarului de tunel |
--tunnel-sha256 |
CC_SERVER_TUNNEL_SHA256 |
nesetat | SHA-256 așteptat al acelui binar, verificat înainte de fiecare lansare |
--tunnel-args |
CC_SERVER_TUNNEL_ARGS |
gol | Argumente suplimentare separate prin virgulă pentru invocarea tunelului |
Indexare și credențiale de la terți
Secțiune intitulată „Indexare și credențiale de la terți”| Flag | Variabilă | Implicit | Semnificație |
|---|---|---|---|
--sandbox |
CC_SERVER_SANDBOX |
on |
Dacă rulările agenților sunt înfășurate în sandbox-ul nativ al sistemului de operare al gazdei, atunci când există unul. O renunțare explicită, nu o activare — vezi mai jos |
--code-index |
CC_SERVER_CODE_INDEX |
on |
Comutator de oprire forțată, utilizabil în producție, pentru indexarea în fundal a grafului de cod. off pornește curat, fără o reconstrucție |
--code-index-defer |
CC_SERVER_CODE_INDEX_DEFER |
15 |
Secunde cât este amânată prima trecere de indexare după bannerul de disponibilitate (limitat la 0–300) |
--tool-deferral |
CC_SERVER_TOOL_DEFERRAL |
on |
Dacă rulările harnessului trimit un set mic de instrumente rezidente plus un index de nume, încărcând restul la prima utilizare. Vezi mai jos |
--credential-gate |
CC_SERVER_CREDENTIAL_GATE |
900 |
Secunde cât o rulare rămâne în așteptare până când un om remediază un credențial care nu o poate deservi (limitat la 0–3600). Vezi mai jos |
O valoare goală pentru un credențial este citită ca nesetată, așa că soluția de rezervă integrată se aplică în continuare. O compilare din sursă nu conține deloc credențiale integrate.
Google Calendar și selectorul de GIF-uri Klipy sunt disponibile doar prin variabile
de mediu — nu există niciun flag --google-client-id / --klipy-app-key (flag-urile
necunoscute sunt ignorate). Setează GOOGLE_OAUTH_CLIENT_ID +
GOOGLE_OAUTH_CLIENT_SECRET și KLIPY_APP_KEY în mediu (sau într-un .env lângă
server). O valoare goală dezactivează funcția respectivă, în loc să facă pornirea să
eșueze.
--sandbox
Secțiune intitulată „--sandbox”Serverul sondează gazda o dată la pornire și înfășoară execuția comenzilor agenților în
sandbox-ul nativ al sistemului de operare atunci când există un backend disponibil:
sandbox-exec (Seatbelt) pe macOS, bwrap plus socat pe Linux și WSL2. Acolo unde nu
există niciunul — pe Windows sau pe o gazdă Linux căreia îi lipsesc acele instrumente —
rulările revin la sanitizarea mediului, la politica de comenzi și la guardrail-urile de
acțiune, iar jurnalul de pornire spune care dintre stări se aplică.
--sandbox off este comutatorul de oprire forțată pentru cazul pe care sonda nu îl poate
vedea: o gazdă în care profilul de sandbox se comportă el însuși greșit. Nu necesită o
reconstrucție, iar serverul scrie un avertisment în jurnal pe toată durata procesului,
astfel încât starea nu este niciodată trecută sub tăcere.
--tool-deferral
Secțiune intitulată „--tool-deferral”Rulările harnessului integrat trimit un set rezident mic de definiții de instrumente
plus un index doar cu numele restului, care își încarcă schemele la prima utilizare.
Reduce blocul de instrumente cu aproximativ 78% și menține setul mereu vizibil în
intervalul în care modelele selectează instrumente în mod fiabil. Instrumentele amânate
rămân apelabile după nume pe tot parcursul, iar search_tools le găsește după intenție.
Vezi Contextul instrumentelor și cache-ul prompturilor.
--tool-deferral off face din nou rezident fiecare instrument admis, reproducând
cererile pe care le făcea serverul înainte de a exista amânarea. Este comutatorul de
oprire forțată pentru un model care se descurcă prost cu suprafața pe două niveluri — un
flag, în locul unei reconstrucții. Afectează doar harnessul integrat; catalogul pe care
îl văd clienții MCP externi prin tools/list este întotdeauna cel complet.
--credential-gate
Secțiune intitulată „--credential-gate”O rulare căreia îi lipsește credențialul de provider sau al cărei credențial este epuizat este pusă în așteptare în loc să eșueze: operatorul primește o solicitare de a-l remedia, iar rularea își reia cursul dacă o face. Termenul limită implicit este de 900 de secunde (15 minute), limitat la 0–3600.
Termenul este în mod deliberat mult mai lung decât cel al solicitării de aprobare: o aprobare este o decizie pe care cineva o ia în câteva secunde, în timp ce remedierea unui credențial înseamnă să deschizi un terminal, să te autentifici și să revii. Plafonul este cel care împiedică o rulare nesupravegheată — un pas de pipeline, un declanșator cron, un webhook — să aștepte după cineva care doarme. Când expiră, rularea eșuează cu mesajul cu care oricum ar fi eșuat.
--credential-gate=0 este comutatorul de oprire forțată: nimic nu este pus vreodată în
așteptare, iar un credențial defect încheie turul exact ca înainte de a exista poarta.
Subcomenzi
Secțiune intitulată „Subcomenzi”| Comandă | Ce face |
|---|---|
cc_server |
Rulează serverul până la SIGINT/SIGTERM |
cc_server pair |
Provisionează un dispozitiv și afișează id-ul și cheia lui de asociere. Sigur față de un director de date pe care un server îl servește deja — serverul care rulează preia dispozitivul fără repornire |
cc_server calendar connect --workspace <id> |
Conectează un cont Google la un spațiu de lucru prin fluxul cu cod de dispozitiv, apoi se încheie |
cc_server update |
Verifică, descarcă și validează o versiune autonomă mai nouă |
cc_server --version |
Afișează versiunea compilării și SHA-ul git — aceeași identitate pe care o anunță /healthz și handshake-ul RPC |
| Flag | Implicit | Semnificație |
|---|---|---|
--device |
web-client |
Id-ul dispozitivului. Platforma este dedusă din el, așa că --device desktop emite un rând de desktop, iar --device ios/android un rând de telefon; orice altceva este tratat ca web |
--label |
numele platformei plus numele de gazdă al acestei mașini | Numele afișat în lista de dispozitive |
--host |
localhost, sau <this-host> când este legat la orice interfață |
Gazda de inclus în URL-ul afișat. Setează-o la IP-ul din LAN sau la gazda tunelului pe care un client o va apela efectiv |
--client-url |
nesetat | Originea clientului web găzduit. Adaugă un link profund scanabil și un cod QR de terminal |
pair acceptă și flag-urile principale --data-dir, --port și --bind: ele
selectează directorul de date în care se scrie și determină forma URL-ului de server
afișat (ws pe loopback, wss cu --bind any). Rularea din nou a pair pentru
același --device rotește cheia lui și închide sesiunile active ale acelui dispozitiv.
Un credențial emis aici nu expiră niciodată, spre deosebire de cele 30 de zile pe
care le stabilește o asociere din aplicație.
--apply înlocuiește instalarea; este refuzat cât timp un server mai răspunde pe portul
configurat, dacă nu cumva treci --force. --allow-downgrade permite o versiune mai
veche.
Comanda refuză direct, cu o explicație în loc de o eroare, pentru instalările pe care nu le deține:
| Mediu | Detectat prin | Ce spune |
|---|---|---|
| Serverul încorporat al aplicației desktop | CC_EMBEDDED=1 sau CC_BOOTSTRAP_DEVICE_ID |
Actualizează în schimb aplicația — programul de instalare înlocuiește întregul arbore |
Un checkout de sursă rulat cu dart run |
calea scriptului se termină în .dart |
Actualizează-l cu git |
| Docker | marcajele de container | Descarcă o imagine mai nouă |
Ciclul de viață al procesului
Secțiune intitulată „Ciclul de viață al procesului”cc_server rulează până la SIGINT / SIGTERM. O variabilă de mediu suplimentară
guvernează asta, și este setată de aplicația desktop, nu de tine:
| Variabilă | Efect |
|---|---|
CC_EXIT_WITH_PARENT=1 |
Serverul se încheie când se încheie procesul său părinte, detectat prin faptul că părintele închide capătul de scriere al conductei sale stdin. Aplicația desktop o setează pentru ca o aplicație blocată să nu lase niciodată un server orfan care ține directorul de date |
Seteaz-o singur doar dacă supraveghezi cc_server ca proces copil și vrei aceeași
garanție.
Structura directorului de date
Secțiune intitulată „Structura directorului de date”Directorul de date implicit este ~/Library/Application Support/control-center pe macOS,
%APPDATA%\control-center pe Windows și $XDG_DATA_HOME/control-center (altfel
~/.local/share/control-center) în rest. Un .cc_server relativ la directorul de lucru
curent este folosit doar când nu se poate rezolva niciun director home sau de date de
aplicație.
| Cale | Conținut |
|---|---|
global.db |
Registrul spațiilor de lucru, utilizatorii, dispozitivele asociate, fluxul de știri și coada flotei |
<workspaceId>/workspace.db |
O bază de date per spațiu de lucru — agenți, spații, tichete, memorie, graful de cod |
<workspaceId>/chat_credentials/ |
Tokenuri de bot de chat, ca JSON simplu, ca să meargă împreună cu spațiul de lucru |
secrets.json |
Chei de asociere, identitatea de aplicație a providerului, tokenuri per utilizator și Google, SSO (0600) |
backups/<timestamp>/ |
Un snapshot de instalare — manifest.json, global.db și o copie a fiecărui spațiu de lucru |
backups/exports/ |
Exporturi ale unui singur spațiu de lucru, <workspaceId>-<timestamp>.db |
backups/transfer/ |
Zonă de tranzit pentru descărcările și încărcările de backup; curățată de ruta care o scrie |
models/ |
Modele de embedding, diarizare și voce, rulate pe dispozitiv |
meetings/<meetingId>/ |
Audio de întâlnire păstrat |
rigs/images/ |
Imagini de disc de stație importate (suprafața de desktop QEMU) |
rigs/smolvm/<rigId>/ |
Starea de rulare a microVM-ului per stație (secretul brokerului, 0600) |
rigs/smolvm-packs/ |
Pachete de mașini pre-extrase — cache-ul care face rapide pornirile repetate ale stațiilor |
rigs/tls/ |
Autoritatea de certificare a domeniului de dezvoltare pentru HTTPS-ul stațiilor (chei 0600) |
rigs/run/<rigId>/ |
Straturi suprapuse QEMU, imagini seed și chei per VM (0600) |
- Rulează un server headless — rețeta de configurare căreia îi aparțin aceste flag-uri
- Rulează un worker din flotă — binarul separat
cc_workercare se înregistrează la acest server - Backup și restaurare — cum să copiezi acest director într-un loc sigur
- Backup, export și import — structura snapshot-ului și fiecare operațiune de backup
- Conectează-te la un server remote — cum îndrepți un client spre unul
- Implementare și clienți — de ce serverul deține totul