Salta ai contenuti

Motori e costi

Un motore è l’agente di programmazione che usa un run. Kedalio guida ciascuno con la sua CLI ufficiale e il suo login: il codice di Kedalio non usa mai il token di un abbonamento contro un’API. Le chiavi API sono un tipo di account a parte, esplicito.

Motore Login Da sapere
Claude Code Abbonamento Claude, o una chiave API Anthropic I suoi prompt dei permessi diventano richieste. Gira nella sua sandbox, con una lista di siti permessi.
Codex Abbonamento ChatGPT, o una chiave API OpenAI Gira nella sua sandbox senza rete e non chiede mai, quindi non fa richieste. I suoi costi non hanno ancora un prezzo: risultano 0 $.
OpenCode Una chiave API: Anthropic, OpenAI, OpenRouter, DeepSeek, o un Ollama locale Gira nella gabbia bubblewrap dell’host; i suoi prompt dei permessi diventano richieste.
Pi Una chiave API, come OpenCode Gira nella gabbia bubblewrap dell’host, come OpenCode; le sue richieste di permesso diventano richieste.

Gli host installano i motori nella loro cache alle versioni che il server fissa nel suo codice (Claude Code alla versione che serve al plugin); KEDALIO_ENGINES (per esempio [email protected],[email protected]) cambia quella di un motore. Nessun motore aggiunge righe di credito all’AI nei commit che fa.

Il tuo agente e le squadre possono usare ognuno dei motori qui sopra.

Un account di un motore ha un nome (minuscolo, al massimo 40 caratteri), un motore, un tipo (subscription o api-key) e il suo valore, che va nel vault e non ne esce più.

  • Abbonamento Claude: il token che stampa claude setup-token su un computer dove usi Claude Code.
  • Abbonamento ChatGPT per Codex: il contenuto dell’auth.json di Codex, dopo codex login.
  • Una chiave API: la chiave e, per OpenCode, il provider (anthropic, openai, openrouter, deepseek, oppure ollama con il suo indirizzo).

Nell’app: Sistema → Account e costi → Aggiungi account. Scegli il tipo (abbonamento Claude, ChatGPT / Codex, o chiave API), segui i passi mostrati (per Claude, lancia claude setup-token in un terminale, entra con quell’account nel browser che si apre e incolla il token che stampa) e salva. Il valore viene sigillato nel vault e non si mostra più. Il modulo offre le chiavi Anthropic, OpenAI e OpenRouter; DeepSeek o un Ollama locale per OpenCode e Pi si impostano con l’API (PUT /api/engines/<nome> con provider, e baseUrl per Ollama). I login senza terminale (il flusso del token di Claude e il codice dispositivo di Codex dall’app) non ci sono ancora.

Gli abbonamenti hanno finestre d’uso (5 ore, 7 giorni). Kedalio le legge dall’output dei motori durante i run (gli eventi di limite di Claude Code, il log di sessione di Codex) e tiene la lettura più recente per account.

  • Un account non prende run nuovi solo quando il motore dice che il suo limite è raggiunto (una finestra al 100%, fino al suo reset), o quando gli hai messo un tetto e una finestra recente è pari o sopra. Il tetto è spento di default. Il piazzamento dice perché («Non prende lavoro nuovo»).
  • Priorità: ordini tu gli account. Quando un run non nomina nessun account, va al primo di quell’ordine che le regole sui dati del progetto permettono e che non è bloccato. È una preferenza: un brief può nominarne un altro.
  • Ritmo: per ogni finestra la pagina mostra quanto avresti usato distribuendola in modo uniforme fino al reset, e se sei sotto, in linea o sopra. È un consiglio per spendere lo spazio che sta per ripartire; niente viene imposto da lì.
  • Una lettura più vecchia di 30 minuti è scaduta. Prima di un’esecuzione senza nessuno su un account con lettura scaduta, un run minuscolo di prova («rispondi ok», il modello più economico) rilegge le finestre.
  • Ti arriva una notifica quando un account si blocca, quando una finestra sta per scadere e quando riparte.

Nell’app, Account e costi mostra ogni account con le sue finestre, il ritmo, il tetto e l’età della lettura, lo sposta su o giù nell’ordine, ne imposta il tetto, e ha Leggi ora per rileggerne uno. Da Claude o ChatGPT: limits mostra finestre, stati e test dei modelli; kedalio.limits_refresh rilegge gli account scaduti.

Ogni progetto ha una classe di dati, e ogni account di un motore una destinazione, dal suo provider:

Classe I suoi dati possono andare a
client (il default) Anthropic, locale
personal Anthropic, OpenAI, locale, terzi
public Anthropic, OpenAI, locale, terzi

Claude Code va ad Anthropic, Codex a OpenAI, Ollama è locale, OpenRouter e DeepSeek sono terzi. Un progetto può anche indicare i soli account che può usare. Il server lo controlla ovunque piazzi un run. La classe di un progetto si imposta con kedalio.project_set (dataClass, accounts); la tabella stessa con kedalio.engine_rules_set.

OpenCode e Pi possono usare qualunque modello, e alcuni modelli rovinano le chiamate agli strumenti. Per questo un modello deve passare un test prima di poter modificare file: su un host scrive un file, ne modifica un altro e lancia un comando in un repository di prova. Il piazzamento rifiuta un run che modifica su un modello che non l’ha passato, e una nuova versione del motore lo rifà. Claude Code e Codex sono il riferimento e non hanno bisogno del test. kedalio.engine_admit avvia un test.

Ogni run registra consumo e costo: la cifra del motore quando la dà, zero per un modello locale, altrimenti il prezzo di listino del modello. Un modello senza prezzo noto è segnato senza prezzo e conta zero. Il registro si somma per run, squadra, progetto, account, modello o giorno con lo strumento costs. Nell’app vedi il costo di ogni agente e quello della squadra rispetto al suo budget, e in Account e costi quanto costano le esecuzioni ogni giorno, negli ultimi sette giorni, divise per progetto.

Kedalio ha skill di orchestrazione che spendono il modello più economico che basta al lavoro:

  1. uno smistatore, un modello piccolo, risponde con un’etichetta sola (haiku, sonnet, opus o fable) e una riga del perché;
  2. il modello scelto lavora;
  3. un verificatore controlla il risultato con criteri oggettivi (test, build, il «fatto» del brief): ok va avanti, doubtful viene ricontrollato da un modello più forte, failed sale di un gradino, con il fallimento come contesto.

La scala è quella di Claude: Haiku, Sonnet, Opus, Fable; un gradino che le regole sui dati o i limiti rifiutano si salta. Una squadra la usa quando il suo capo parte con la ricetta cascade. Una skill model card dice in cosa è bravo ogni modello, quanto costa e come istruirlo.

Non ancora costruiti: un pulsante per il test del modello nell’app (oggi è kedalio.engine_admit), i prezzi dei modelli OpenAI e di terzi, e una misura di quanto ha fatto risparmiare la cascata.