Documentazione

Documentazione

Factory Droid

I modelli personalizzati di Droid sono un array JSON con tre campi obbligatori. Quello che viene interpretato male più spesso è baseUrl, perché la forma corretta dipende dal valore del provider scelto tra i tre disponibili.

Una voce customModels in ~/.factory/settings.json — model, baseUrl e provider — porta Droid su qualsiasi endpoint che supporti Anthropic Messages o OpenAI Chat Completions.

~/.factory/settings.json → customModels
// ~/.factory/settings.json  (Windows: %USERPROFILE%\.factory\settings.json)
{
  "customModels": [
    {
      "model": "claude-sonnet-5",
      "displayName": "Sonnet 5 [Kunavo]",
      "baseUrl": "https://api.kunavo.com",
      "apiKey": "${KUNAVO_API_KEY}",
      "provider": "anthropic"
    },
    {
      "model": "gpt-5-6-sol",
      "displayName": "GPT-5.6 Sol [Kunavo]",
      "baseUrl": "https://api.kunavo.com/v1",
      "apiKey": "${KUNAVO_API_KEY}",
      "provider": "generic-chat-completion-api"
    }
  ]
}

// Then, in the shell Droid starts from:
//   export KUNAVO_API_KEY=sk-kn-...
// ${VAR_NAME} expansion is a settings.json feature. It does NOT apply to the
// legacy ~/.factory/config.json, which Factory still loads and merges.
/v1 appartiene a una voce e non all'altra. La documentazione di Factory chiarisce questo punto con una tabella anziché con una frase: il riferimento sui provider indica https://api.anthropic.com — origine, senza percorso — per provider: "anthropic", mentre https://api.openai.com/v1, https://openrouter.ai/api/v1 e https://api.groq.com/openai/v1 hanno tutti la radice /v1. Droid aggiunge autonomamente la route, quindi la voce Anthropic qui sopra contiene solo l'origine e la voce Chat Completions è /v1. Aggiungere /v1 alla voce Anthropic comporta una richiesta a /v1/v1/messages, che restituisce 404 e non un errore di autenticazione — consulta il riferimento sull'URL di base.
Questa configurazione è stata ricavata dalla documentazione ufficiale di Factory nella data indicata qui sotto. Kunavo non ha eseguito la CLI Droid sul proprio endpoint: né una sessione, né un turno in streaming, né uno scambio completo con strumenti; lo stesso vale per ogni client di questa famiglia. Una pagina di configurazione pubblicata non equivale a un test. Anche Factory include una precisazione analoga: solo i modelli Anthropic e OpenAI sulle rispettive API ufficiali sono, secondo le sue parole, «testati e sottoposti a benchmark in modo completo». La curl qui sotto è la parte che puoi verificare in dieci secondi; il comportamento del client dipende da te e Factory.
Si può omettere authMode. Factory documenta provider-default come valore predefinito: la credenziale viene inviata in x-api-key, e anche l’endpoint Messages di Kunavo accetta quell’intestazione oltre a Authorization: Bearer. Se vuoi esplicitamente usare la forma bearer, Factory documenta authMode: "bearer" per provider: "anthropic", che funziona anche qui.
Non hai ancora una chiave? Crea un account Kunavo, genera una chiave (inizia con sk-kn-) e aggiungi credito da $10: le chiamate vengono pagate con quel saldo e le chiamate non riuscite non vengono addebitate. La dashboard si apre quindi sulla configurazione Factory Droid.

Passo dopo passo

  1. Crea una chiave su /app/keys e copiala: verrà mostrata una sola volta. Esportala come KUNAVO_API_KEY nella shell da cui avvii Droid, così la chiave non viene mai inserita in un file di configurazione.
  2. Apri ~/.factory/settings.json (crealo se non esiste) e aggiungi l’array customModels qui sopra. Factory indica esattamente tre campi obbligatori: model, baseUrl e provider; displayName è l’etichetta mostrata dal selettore.
  3. Controlla la grafia di provider. Deve essere esattamente uno tra anthropic, openai o generic-chat-completion-api; la sezione di risoluzione dei problemi di Factory indica un errore di battitura in questo campo come causa dell’errore "Invalid provider".
  4. Esegui /model nella CLI. Le tue voci appariranno in una sezione Modelli personalizzati separata, sotto quelle di Factory, con l’etichetta displayName che hai impostato. Factory monitora il file di configurazione, quindi basta salvarlo: non occorre riavviare.
  5. Assegna un’attività che legga e modifichi un file, invece di limitarti a un saluto. Droid si affida alle chiamate agli strumenti per quasi tutte le operazioni, ed è proprio questa funzionalità che un semplice turno di chat non verifica. Poi esegui /cost: è lì che Factory mostra le percentuali di cache hit. Kunavo supporta nativamente i marcatori cache_control di Anthropic, mentre la nota di Factory specifica che, con il provider generico Chat Completions, la memorizzazione nella cache «varia a seconda del provider e non può essere garantita».

Verificato rispetto a La pagina di Factory sui modelli personalizzati (BYOK) il 21 settembre 2026. Le impostazioni di terze parti cambiano; se il nome di un campo qui non corrisponde più a quello visualizzato, fa fede quella pagina, non questa.

Questa è la versione breve. La guida completa, con scelta del modello, costo di una sessione reale e modalità di errore, è in la guida ai costi di Factory Droid.

Verifica prima di eseguire il debug del client

Una sola richiesta stabilisce se il problema riguarda l'endpoint, la chiave o il file di configurazione. Se restituisce JSON, lo stesso base URL e la stessa chiave funzionano in Factory Droid.

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/messages \
  -H "Authorization: Bearer sk-kn-..." \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"ping"}]}'

Quale model id inserire nel campo

Ogni modello di testo è raggiungibile come model id: l'elenco aggiornato è GET /v1/models e il catalogo con i prezzi è nella pagina dei modelli. Le tariffe sono in USD per 1M di token, input / output.

ID del modelloKunavo ingresso / uscitaDove si inserisce in Factory Droid
claude-sonnet-5$1.40 / $7.00il modello operativo predefinito: va nella voce provider: "anthropic"
claude-opus-5$3.50 / $17.50pianificare una modifica in cui sbagliare sarebbe costoso; stessa voce anthropic
claude-haiku-4-5$0.70 / $3.50turni economici e selezione dei file, dove domina il volume; stessa voce anthropic
gpt-5-6-sol$2.00 / $12.00un secondo parere da un’altra famiglia: richiede la voce generic-chat-completion-api
La fatturazione è per token, usando un saldo prepagato senza canone mensile: vedi billing. In presenza di contesto ripetuto, che costituisce la maggior parte di ciò che invia un editor o un client di chat, prompt caching incide sulla spesa più della scelta del modello.

A cosa non si applica un modello personalizzato in Droid

Tre limitazioni sono indicate nelle pagine ufficiali di Factory. Ognuna modifica le aspettative sulla configurazione qui sopra, non il suo funzionamento.

  • Solo interfacce locali. La pagina BYOK di Factory specifica che i modelli personalizzati sono disponibili nella CLI Droid e nell’app desktop, che leggono il tuo settings.json, e che «non compaiono sulle piattaforme web o mobili ospitate da Factory». Le attività delegate tramite il prodotto ospitato continuano a usare inferenza fatturata da Factory, qualunque chiave tu abbia configurato qui.
  • Un amministratore può disattivarla. I controlli aziendali di Factory documentano modelPolicy.allowCustomModels e allowedBaseUrls, che disattivano completamente il BYOK degli utenti oppure vincolano ogni modello personalizzato a un unico host approvato. Se usi una macchina gestita, verifica questo aspetto prima di cercare il problema nel file.
  • Il costo del piano resta invariato. Una chiave configurata qui si aggiunge al piano e non lo sostituisce. La guida ai costi spiega quanto addebita Factory oltre la quota BYOK e a quanto ammonta tale quota; questa pagina non ricalcola questi importi.

Un dettaglio da conoscere prima di copiare una configurazione trovata altrove: Factory carica ancora il file legacy ~/.factory/config.json con i campi snake_case custom_models e base_url, integrandolo sotto settings.json; documenta inoltre che l’espansione di ${VAR_NAME} non si applica in quel file. Una chiave inserita come segnaposto verrà inviata letteralmente. Usa settings.json.

Domande frequenti

Come aggiungo un endpoint API personalizzato a Factory Droid?

Modifica ~/.factory/settings.json (%USERPROFILE%\.factory\settings.json su Windows) e aggiungi un array customModels. Ogni voce richiede tre campi obbligatori — model, baseUrl e provider — oltre a campi facoltativi come displayName, apiKey, authMode, maxOutputTokens ed extraHeaders. Non esiste un modulo nelle impostazioni: l’interfaccia è il file JSON. Factory monitora il file, quindi dopo averlo salvato esegui /model nella CLI: la voce apparirà sotto un’intestazione "Modelli personalizzati" separata.

L’URL base di Factory Droid deve terminare con /v1?

Dipende dal valore di provider. Factory chiarisce il punto nella tabella di riferimento Provider, non con una frase. La riga Anthropic indica https://api.anthropic.com senza percorso, quindi il provider "anthropic" usa la sola origine: https://api.kunavo.com per Kunavo. Ogni riga Chat Completions della tabella include una radice /v1 (https://api.openai.com/v1, https://openrouter.ai/api/v1), quindi il provider "generic-chat-completion-api" usa https://api.kunavo.com/v1. Droid aggiunge autonomamente la route, quindi con /v1 nella voce Anthropic si ottiene /v1/v1/messages, che restituisce 404 invece di un errore di autenticazione.

Quale valore provider devo usare per i modelli Claude su un endpoint di terze parti?

Usa "anthropic". Factory documenta tre valori provider, ognuno dei quali seleziona un protocollo wire: "anthropic" per l’API Anthropic Messages su /v1/messages, "openai" per l’API OpenAI Responses e "generic-chat-completion-api" per OpenAI Chat Completions. Il valore indica il protocollo supportato dall’endpoint, non chi ti addebita i costi; quindi un gateway che risponde a /v1/messages richiede "anthropic", indipendentemente dall’account a cui appartiene la chiave. Factory raccomanda di usare "generic-chat-completion-api" a meno che non si chiami l’API ufficiale di OpenAI o Anthropic. Questa indicazione riguarda però il protocollo disponibile; se un endpoint supporta entrambi, puoi scegliere.

Perché Factory Droid segnala un provider non valido o ignora il mio modello personalizzato?

La sezione di risoluzione dei problemi di Factory indica tre cause. Se un modello non compare nel selettore, di solito il file settings.json contiene un errore di sintassi JSON oppure manca un campo obbligatorio: model, baseUrl o provider. L’errore "Invalid provider" indica un problema di grafia: il valore deve essere esattamente anthropic, openai o generic-chat-completion-api. Un errore di autenticazione riguarda la chiave o l’URL base; Factory consiglia di verificare che l’URL base corrisponda alla documentazione del provider. Prima verifica quale dei casi è il tuo al di fuori del client con il comando curl qui sopra: se ricevi JSON, endpoint e chiave funzionano e il problema è nel file di configurazione.