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 (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.curl qui sotto è la parte che puoi verificare in dieci secondi; il comportamento del client dipende da te e Factory.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.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
- Crea una chiave su
/app/keyse copiala: verrà mostrata una sola volta. Esportala comeKUNAVO_API_KEYnella shell da cui avvii Droid, così la chiave non viene mai inserita in un file di configurazione. - Apri
~/.factory/settings.json(crealo se non esiste) e aggiungi l’arraycustomModelsqui sopra. Factory indica esattamente tre campi obbligatori:model,baseUrleprovider;displayNameè l’etichetta mostrata dal selettore. - Controlla la grafia di
provider. Deve essere esattamente uno traanthropic,openaiogeneric-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". - Esegui
/modelnella CLI. Le tue voci appariranno in una sezione Modelli personalizzati separata, sotto quelle di Factory, con l’etichettadisplayNameche hai impostato. Factory monitora il file di configurazione, quindi basta salvarlo: non occorre riavviare. - 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 marcatoricache_controldi 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.
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 modello | Kunavo ingresso / uscita | Dove si inserisce in Factory Droid |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | il modello operativo predefinito: va nella voce provider: "anthropic" |
claude-opus-5 | $3.50 / $17.50 | pianificare una modifica in cui sbagliare sarebbe costoso; stessa voce anthropic |
claude-haiku-4-5 | $0.70 / $3.50 | turni economici e selezione dei file, dove domina il volume; stessa voce anthropic |
gpt-5-6-sol | $2.00 / $12.00 | un secondo parere da un’altra famiglia: richiede la voce generic-chat-completion-api |
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.allowCustomModelseallowedBaseUrls, 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.