Salta ai contenuti

Il daemon

Il daemon è tcc in esecuzione in background: un endpoint HTTP su questa macchina e un server MCP per gli assistenti IA. Con un proprio account esegue anche un ciclo di sincronizzazione che mantiene aggiornata la cache locale.

Esiste per macchine senza sessione desktop — un server Linux, un agente di build, un container. Su macOS e Windows l’applicazione desktop esegue già la stessa cosa mentre la sua finestra è aperta, quindi lì normalmente non avvii il daemon a mano.

tcc daemon start
tcc daemon status
tcc daemon stop

start gira in primo piano e blocca finché il processo non viene fermato. Scrive un file PID, quindi un secondo start si rifiuta invece di contendere la porta con il primo, e un file PID rimasto da un crash viene ripulito al prossimo avvio.

stop chiede al daemon in esecuzione di spegnersi. status stampa se è in esecuzione, il suo process ID e la sua porta — e dice chiaramente quando trova un file PID per un processo non più vivo.

tcc daemon start gira da macchina a macchina per impostazione predefinita. Non ha un proprio account: risponde per conto di chiunque presenti un token API della piattaforma, non tiene nessuna cache locale, e non esegue nessun ciclo di sincronizzazione. I token dell’endpoint locale sono rifiutati in questa modalità, con un messaggio che lo dice.

Per dare invece al daemon una propria identità, effettua prima l’accesso con tcc setup e avvialo con TCC_MODE=hybrid impostato. Da quel momento tiene una cache locale, si sincronizza in background, e accetta i token dell’endpoint locale descritti sotto. È la modalità in cui gira sempre l’applicazione desktop, e la modalità da scegliere se vuoi che il daemon si comporti come il client con accesso effettuato proprio della macchina.

Un daemon hybrid su un account che non ha mai eseguito tcc setup parte e serve comunque. Non fa sincronizzazione, perché non c’è nulla da sincronizzare.

La sessione propria di un daemon dura al massimo 12 ore dall’accesso; poi accedi di nuovo con tcc auth login --code (vedi Accesso). I token API della piattaforma non sono sessioni e non finiscono mai così: usane uno per tutto ciò che gira senza sorveglianza.

Per impostazione predefinita il daemon si lega a 127.0.0.1 — l’indirizzo di loopback — sulla porta 19821. Niente al di fuori di questa macchina può raggiungerlo. È ciò che rende sicuro usare l’endpoint locale senza una password da strumenti in esecuzione accanto.

Due variabili d’ambiente lo cambiano:

  • TCC_HTTP_PORT — una porta diversa, quando 19821 è occupata.
  • TCC_HTTP_BIND — un indirizzo di binding diverso.

Cambiare l’indirizzo di binding è l’unica impostazione qui con conseguenze reali. Nel momento in cui il daemon ascolta su qualcosa di diverso dal loopback diventa raggiungibile dalla tua rete, e l’assunzione su cui si basa l’endpoint locale non vale più. Se lo fai, mettilo dietro qualcosa che autentica.

Su Linux:

tcc daemon install-service

Questo scrive un’unità systemd utente, la abilita e la avvia, così il daemon torna dopo un riavvio. Si riavvia in caso di errore. Controllalo nel modo consueto:

systemctl --user status trusted-codes

Il comando è solo per Linux. Su macOS e Windows, usa invece l’avvio all’accesso proprio dell’applicazione desktop.

Quando un daemon o l’applicazione desktop sono già in esecuzione, un comando tcc ordinario non duplica il lavoro — passa la richiesta all’istanza in esecuzione e stampa la risposta. Vedrai una riga che dice che si è connesso. Quando nulla è in esecuzione, lo stesso comando fa il lavoro da solo.

Non devi configurare questo, e il risultato è lo stesso in entrambi i casi.

Un tcc sul tuo laptop può parlare con un daemon in esecuzione altrove — una macchina condivisa, un runner CI — invece di agire come proprio client.

Per un singolo comando:

tcc --server https://tcc.example.com --token <platform-api-token> code list

Per renderlo predefinito:

tcc config set-remote https://tcc.example.com --token <platform-api-token>
tcc config show-remote # l'URL, con il token mascherato
tcc config clear-remote # torna al daemon locale

L’impostazione è memorizzata sotto la tua home directory e letta a ogni invocazione. I flag --server e --token, e le variabili d’ambiente TCC_REMOTE_URL e TCC_API_TOKEN, la sovrascrivono per una singola esecuzione.

Un token è richiesto ogni volta che un server remoto è impostato. Usane uno da tcc api-token generate, non uno da tcc config create-api-token. Quando un remoto è configurato, i comandi vanno lì e da nessun’altra parte — se il remoto non può essere raggiunto il comando fallisce invece di girare silenziosamente sul tuo stesso account.

Gli strumenti su questa macchina che parlano con l’applicazione desktop, o con un daemon avviato in modalità hybrid, usano un token che emetti tu:

tcc config create-api-token --label claude --scope read
tcc config list-api-tokens
tcc config show-api-token claude
tcc config revoke-api-token claude

--scope è read, write o full, e per impostazione predefinita è full. --ttl-hours dà al token una scadenza; ometterlo significa nessuna scadenza, il che ha senso solo per un token che non lascia mai questa macchina. list-api-tokens maschera i valori — show-api-token è quello che stampa un token intero, quindi tienilo fuori da terminali condivisi e log.

Questi sono separati da tcc api-token, che emette token per la piattaforma Trusted Codes stessa. Un daemon da macchina a macchina — l’impostazione predefinita per tcc daemon start — rifiuta i token locali e ne prende invece uno della piattaforma, e lo stesso fa un daemon remoto raggiunto con --server.

tcc parla anche MCP, che è come un assistente IA sulla tua macchina può cercare un codice o verificare parole per te. Questo non passa dal daemon: configure scrive una voce che dice all’assistente di avviare tcc mcp da solo, e quel processo parla direttamente con il tuo account. Non hai bisogno di un daemon in esecuzione per questo.

tcc mcp status # quali app IA sono configurate
tcc mcp configure cursor
tcc mcp remove cursor

Per Claude Code, usa claude mcp add come mostrato in Collegare un assistente. L’attuale configure claude-code scrive un file che Claude Code non legge.

configure supporta claude-desktop, claude-code e cursor. Il server MCP è una parte separata del tuo piano rispetto all’applicazione desktop stessa.