Salta ai contenuti

Squadre e incarichi

Una squadra lavora in un progetto: un repository (un indirizzo https), il ramo da cui partono i run (dev di default), la forge il cui token fa il push lì, il motore e l’account che usano i suoi run. Nell’app, Progetti → Nuovo progetto ne aggiunge uno (nome come cartella, personal/site; repository; forge) e le Impostazioni del progetto cambiano il ramo di base, i rami protetti, il motore e gli account, la regola sui dati, la delega e le regole. Da Claude o ChatGPT, kedalio.project_set fa lo stesso, con la sua classe di dati (Motori e costi); kedalio.projects li mostra.

Il token della forge va nel vault, mai in una chat. Per il push sono supportate Forgejo, Gitea, GitLab e GitHub, ciascuna con un indirizzo di base e un token; la scheda Git legge Forgejo, Gitea e GitHub.

Nell’app: Sistema → Chiavi e token → Nuova forge. Scrivi il nome, il tipo, il suo indirizzo e il token. Su Forgejo e Gitea il token vuole i permessi write:repository (leggere il codice, fare push, aprire e unire pull request) e write:issue (commentare e rivedere le pull request; senza, i commenti vengono rifiutati), e read:user, facoltativo: senza, l’elenco dei repository in Nuovo progetto usa la ricerca della forge. Quando la forge rifiuta per un permesso mancante, Kedalio lo nomina: aggiungilo sulla forge e salva di nuovo il token, poi scegli la forge nelle Impostazioni del progetto. Riscrivi lo stesso nome per sostituire il token.

  • Dall’app: Progetti → il progetto → Nuova squadra. Scrivi cosa deve fare (obiettivo, contesto, cosa vuol dire «fatto»), scegli il progetto, l’host («Qualunque host in linea» di default) e il budget in dollari (10 di default), poi «Avvia la squadra».
  • Dal tuo agente: propone un brief; approvarlo avvia la squadra (Il tuo agente).
  • Da Claude o ChatGPT: work.start con il progetto e il brief.

Il primo agente è il capo della squadra. Ogni agente lavora nel suo worktree, sul suo ramo kedalio/<run-id>, di cui l’host fa il push ogni due minuti quando si muove e un’ultima volta alla fine.

Gli agenti avviano agenti con gli stessi strumenti, limitati al proprio sottoalbero. Tutto l’albero ha un solo budget, fatto rispettare dal server:

Limite Default per una squadra
Profondità 3 livelli
Agenti al lavoro insieme 4
Agenti in tutto 20
Costo 10 $
Scadenza 24 ore (al massimo 30 giorni)

Un figlio riceve quello che resta del budget del genitore: un livello in meno e, di default, una quota del costo e solo sé stesso. Quando si raggiunge il costo o la scadenza, il server ferma quel sottoalbero e te lo dice. I costi si contano in dollari dal registro.

Ogni agente ha una delega: regole sugli strumenti con la sintassi dei permessi di Claude Code (allow, ask, deny), per esempio Bash(pnpm test:*). Un run può fare ciò che permettono tutte le deleghe dalla radice fino a lui. Vince la risposta più restrittiva, e quello che nessuna regola copre diventa una richiesta.

Una richiesta va prima al genitore al lavoro più vicino, che risponde dentro la sua delega: non può mai permettere più di quanto possa fare lui. Se il genitore non risponde entro cinque minuti, o l’azione va oltre lui, la richiesta sale, fino a te.

Alcune richieste arrivano sempre a te e sono serie: le confermi con la passkey. Sono un push su un ramo protetto, un push con --all, --mirror o --tags, spegnere una sandbox, toccare il token dell’host o i file di un altro run, e quello che corrisponde a una tua regola «seria».

Nell’app una richiesta mostra chi chiede e dove, il comando esatto e perché arriva a te, con Consenti (o Consenti con passkey), Per tutta la sessione e Nega. Ti arriva anche come notifica.

Codex non chiede mai: gira nella sua sandbox senza rete e senza approvazioni, quindi un agente Codex non fa richieste.

La scheda Squadre di un progetto, e la pagina della squadra, mostrano le squadre al lavoro e quelle finite come alberi dal vivo: per ogni agente stato, motore, modello, account, host e costo, e in alto il budget usato. Ferma questo ramo ferma un agente e tutto quello che ha sotto; il lavoro fatto finora resta sui loro rami. Oggi mostra prima quello che aspetta te, poi quello che è al lavoro.

Un incarico è lavoro con un «quando». Lo crei nell’app (la scheda Incarichi di un progetto, o Incarichi → Nuovo), oppure lo dici in Claude o ChatGPT con il connettore («ogni giorno feriale alle 8 controlla la salute della produzione del progetto A»): il client te lo rilegge e lo aggiunge (tasks.assignment_add) quando sei d’accordo; tasks.assignment_list li mostra. Nell’app sono tre gruppi (a cadenza, una volta, a un evento) e uno chiuso conserva la sua storia. Ogni incarico ha:

  • cosa: un brief, un progetto e, se serve, l’account del motore e l’host;
  • quando: un orario (cron a cinque campi sul tuo fuso), una data (2026-11-03T09:00, 09:00 per la prossima, oppure +2h) o un evento;
  • cosa produce, a parole;
  • a chi lo dice: una notifica, una riga nel diario, il resoconto del mattino (che comunque legge ogni esecuzione).

Gli eventi sono: un’issue con un’etichetta sul repository del progetto (Kedalio aggiunge da solo il webhook su Forgejo e Gitea; sulle altre forge lo aggiungi a mano), un webhook tuo su /hooks/… con una firma HMAC facoltativa (il suo indirizzo si mostra una sola volta, quando lo crei), e la fine del run di un altro incarico. Esegui ora ne fa scattare uno subito.

Un’esecuzione che non può partire aspetta un host per il suo margine (60 minuti di default), poi conta come mancata. Un incarico si mette in pausa, si riprende o si chiude, ed è per sempre; nell’app puoi anche eliminarlo con la sua storia di esecuzioni, e i run che ha avviato restano.

Anche gli agenti di una squadra possono programmarsi da soli un seguito nel loro progetto: solo a una data, al massimo fra 30 giorni, con quello che resta del loro budget e della loro delega, e al massimo cinque al giorno per squadra di default.

Il fuso orario si imposta in Sistema → Preferenze (Account e accesso): «Gli incarichi e il report del mattino seguono questo orologio.»

Cosa succede quando un incarico scatta di notte, e il resoconto del mattino, sono in Run senza nessuno.

Non ancora costruiti: gli inneschi da posta e calendario, la traccia di chi ha risposto a una richiesta, e trasformare una risposta ripetuta in una regola con un tocco.