Documentação
Factory Droid
Os modelos personalizados do Droid são uma matriz JSON com três campos obrigatórios. O que costuma ser interpretado incorretamente é baseUrl, pois o formato correto depende de qual dos três valores de provedor você escolheu.
Uma entrada customModels em ~/.factory/settings.json — model, baseUrl e provider — coloca o Droid em qualquer endpoint que fale Anthropic Messages ou 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 pertence a uma entrada, não à outra. A documentação da Factory esclarece isso com uma tabela, não com uma frase: a referência de provedores informa https://api.anthropic.com — origem, sem caminho — para provider: "anthropic", enquanto https://api.openai.com/v1, https://openrouter.ai/api/v1 e https://api.groq.com/openai/v1 incluem todos a raiz /v1. O Droid acrescenta a rota por conta própria; portanto, a entrada Anthropic acima usa apenas a origem, e a entrada Chat Completions é /v1. Incluir /v1 na entrada Anthropic solicita /v1/v1/messages, que é um 404, não uma falha de autenticação — consulte a referência de URL base.curl abaixo é a parte que você pode verificar em dez segundos; o comportamento do cliente depende de você e da Factory.authMode. A Factory documenta o padrão, provider-default, como o envio da credencial em x-api-key, e o endpoint Messages da Kunavo também aceita esse cabeçalho, assim como Authorization: Bearer. Se algum dia quiser especificar explicitamente o formato Bearer, a Factory documenta authMode: "bearer" para provider: "anthropic", que também funciona aqui.sk-kn-) e adicione crédito a partir de $10 — as chamadas são pagas com esse saldo, e chamadas malsucedidas não são cobradas. O painel então abre na configuração de Factory Droid.Passo a passo
- Crie uma chave em
/app/keyse copie-a — ela é exibida uma única vez. Exporte-a comoKUNAVO_API_KEYno shell de onde você inicia o Droid, para que a própria chave nunca seja gravada em um arquivo de configurações. - Abra
~/.factory/settings.json(crie-o se ainda não existir) e adicione o arraycustomModelsacima. A Factory marca exatamente três campos como obrigatórios —model,baseUrleprovider— edisplayNameé o rótulo exibido pelo seletor. - Confira a grafia de
provider. O valor deve ser exatamente um deanthropic,openaiougeneric-chat-completion-api; a seção de solução de problemas da Factory aponta um erro de digitação nesse campo como causa do erro"Invalid provider". - Execute
/modelna CLI. Suas entradas aparecem em uma seção separada Modelos personalizados, abaixo dos modelos próprios da Factory, identificadas pelodisplayNamedefinido por você. A Factory monitora o arquivo de configurações, então basta salvá-lo — não é necessário reiniciar. - Dê a ele uma tarefa que leia e edite um arquivo, em vez de apenas cumprimentá-lo. O Droid depende do uso de ferramentas para quase tudo o que faz, e um turno de conversa simples não exercita essa parte. Em seguida, execute
/cost, onde a Factory informa as taxas de acerto do cache — a Kunavo oferece os marcadorescache_controlda Anthropic de forma nativa, e a observação da própria Factory é que, no provedor genérico Chat Completions, o cache “varia de acordo com o provedor e não pode ser garantido”.
Verificado em Página de modelos personalizados (BYOK) da Factory em 21 de setembro de 2026. As configurações de terceiros podem mudar; se o nome de um campo aqui já não corresponder ao que você vê, aquela página é a autoridade, não esta.
Verifique antes de depurar o cliente
Uma solicitação determina se a falha está no endpoint, na chave ou no arquivo de configuração. Se isto retornar JSON, a mesma URL base e a mesma chave funcionarão em 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"}]}'Qual ID de modelo inserir no campo
Todo modelo de texto pode ser acessado como um ID de modelo — a lista atual está em GET /v1/models, e o catálogo com preços está na página de modelos. As tarifas são em USD por 1 milhão de tokens, entrada / saída.
| ID do modelo | Entrada / saída da Kunavo | Onde se encaixa em Factory Droid |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | o modelo de trabalho padrão — deve ser incluído na entrada provider: "anthropic" |
claude-opus-5 | $3.50 / $17.50 | planejando uma mudança em que seria caro errar; a mesma entrada da Anthropic |
claude-haiku-4-5 | $0.70 / $3.50 | turnos baratos e triagem de arquivos, quando o volume predomina; a mesma entrada da Anthropic |
gpt-5-6-sol | $2.00 / $12.00 | uma segunda opinião de outra família — requer a entrada generic-chat-completion-api |
O que um modelo personalizado não acessa no Droid
Há três limitações descritas nas próprias páginas da Factory, e cada uma altera o que você deve esperar da configuração acima, não se ela funciona.
- Disponível apenas em ambientes locais. A página BYOK da Factory informa que os modelos personalizados estão disponíveis na CLI do Droid e no aplicativo para desktop, que leem seu
settings.json, e que eles “não aparecem nas plataformas web ou móveis hospedadas pela Factory”. O trabalho delegado por meio do produto hospedado continua sendo executado com inferência cobrada pela Factory, independentemente da chave configurada aqui. - Um administrador pode desativá-lo. Os controles empresariais da Factory documentam
modelPolicy.allowCustomModelseallowedBaseUrls, que desativam completamente o BYOK do usuário ou restringem todos os modelos personalizados a um único host aprovado. Em uma máquina gerenciada, confira isso antes de investigar o arquivo. - A taxa do plano continua sendo cobrada. Uma chave aqui é um complemento, não uma substituição — o que a Factory cobra quando o uso ultrapassa a franquia BYOK, e qual é o limite dessa franquia, é assunto do guia de custos e não é recalculado nesta página.
Há uma armadilha que vale conhecer antes de copiar uma configuração de outro lugar: a Factory ainda carrega o arquivo legado ~/.factory/config.json com custom_models e base_url em snake_case, mesclando-o abaixo de settings.json, e documenta que a expansão de ${VAR_NAME} não se aplica a ele. Uma chave escrita como marcador nesse arquivo é enviada literalmente. Use settings.json.
Perguntas frequentes
Como adiciono um endpoint de API personalizado ao Factory Droid?
Edite ~/.factory/settings.json (%USERPROFILE%\.factory\settings.json no Windows) e adicione um array customModels. Cada entrada precisa de três campos obrigatórios — model, baseUrl e provider — além de campos opcionais, como displayName, apiKey, authMode, maxOutputTokens e extraHeaders. Não há formulário de configurações para isso; a interface é o arquivo JSON. A Factory monitora o arquivo, então, depois de salvá-lo, execute /model na CLI e a entrada aparecerá sob um título separado, "Modelos personalizados".
O baseUrl do Factory Droid precisa terminar em /v1?
Depende do valor de provider, e a documentação da Factory esclarece isso com a tabela de referência de provedores, não com uma frase. A linha Anthropic informa https://api.anthropic.com sem caminho, então o provedor "anthropic" usa apenas a origem — https://api.kunavo.com para a Kunavo. Todas as linhas Chat Completions dessa tabela incluem uma raiz /v1 (https://api.openai.com/v1, https://openrouter.ai/api/v1), então o provedor "generic-chat-completion-api" usa https://api.kunavo.com/v1. O Droid acrescenta a rota por conta própria; portanto, incluir /v1 na entrada Anthropic gera /v1/v1/messages e retorna 404, não um erro de autenticação.
Qual valor de provider devo usar para modelos Claude em um endpoint de terceiros?
Use "anthropic". A Factory documenta três valores de provider, cada um selecionando um protocolo de comunicação: "anthropic" para a API Anthropic Messages em /v1/messages, "openai" para a API OpenAI Responses e "generic-chat-completion-api" para OpenAI Chat Completions. O valor identifica o protocolo usado pelo endpoint, não quem cobra pelo uso; portanto, um gateway que responde em /v1/messages deve usar "anthropic", independentemente da conta a que pertence a chave. A orientação da própria Factory é usar "generic-chat-completion-api", a menos que você esteja chamando a API oficial da OpenAI ou da Anthropic — mas isso se refere ao protocolo disponível, e um endpoint que ofereça ambos permite que você escolha.
Por que o Factory Droid informa que o provedor é inválido ou ignora meu modelo personalizado?
A seção de solução de problemas da Factory aponta três causas. Se um modelo não aparece no seletor, geralmente há um erro de sintaxe JSON em settings.json ou falta um campo obrigatório — model, baseUrl ou provider. O erro "Invalid provider" indica um problema de grafia: o valor deve ser exatamente anthropic, openai ou generic-chat-completion-api. Um erro de autenticação indica um problema com a chave ou com o URL base; a orientação da própria Factory é confirmar que o URL base corresponde à documentação do seu provedor. Primeiro, identifique a causa fora do cliente usando o curl acima: se receber JSON, o endpoint e a chave estão funcionando, e o problema está no arquivo de configurações.