Sari la conținut

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.

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

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.

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.

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.

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ă

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.

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)