문서
Factory Droid
Droid의 사용자 지정 모델은 필수 필드 세 개가 있는 JSON 배열입니다. 잘못 해석하기 쉬운 항목은 baseUrl이며, 올바른 형식은 선택한 세 가지 공급자 값 중 무엇인지에 따라 달라집니다.
~/.factory/settings.json의 customModels 항목 — model, baseUrl, provider — 으로 Droid를 Anthropic Messages 또는 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는 한 항목에만 포함되고 다른 항목에는 포함되지 않습니다. Factory 문서는 이를 문장 대신 표로 명확히 설명합니다. Provider 참조표에서 provider: "anthropic"의 값은 경로가 없는 기본 주소 https://api.anthropic.com이며, https://api.openai.com/v1, https://openrouter.ai/api/v1, https://api.groq.com/openai/v1에는 모두 /v1 루트가 포함됩니다. Droid는 경로를 직접 덧붙이므로 위의 Anthropic 항목에는 기본 주소만 입력하고, Chat Completions 항목에는 /v1를 입력합니다. Anthropic 항목에 /v1를 붙이면 /v1/v1/messages를 요청하게 됩니다. 이는 인증 실패가 아니라 404입니다. 자세한 내용은 기본 URL 참조를 확인하세요.curl 명령은 10초면 확인할 수 있는 부분입니다. 클라이언트 동작은 사용자와 Factory 사이의 문제입니다.authMode는 생략할 수 있습니다. Factory 문서는 기본값인 provider-default가 자격 증명을 x-api-key에 담아 전송한다고 설명하며, Kunavo의 Messages 엔드포인트도 해당 헤더와 Authorization: Bearer를 모두 허용합니다. Bearer 형식을 명시적으로 사용하려면 Factory 문서에 따라 provider: "anthropic"에는 authMode: "bearer"를 지정하면 되며, 여기서도 작동합니다.sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 Factory Droid 설정 화면에서 열립니다.단계별 안내
/app/keys에서 키를 만들고 복사하세요. 키는 한 번만 표시됩니다. Droid를 실행할 셸에서 키를KUNAVO_API_KEY로 내보내면 키 자체를 설정 파일에 저장하지 않아도 됩니다.~/.factory/settings.json를 열고(없으면 만드세요) 위의customModels배열을 추가합니다. Factory가 필수로 지정한 필드는 정확히 세 가지,model,baseUrl,provider입니다.displayName는 선택기에 표시되는 레이블입니다.provider의 철자를 확인하세요. 값은 반드시anthropic,openai,generic-chat-completion-api중 하나와 정확히 일치해야 합니다. Factory의 문제 해결 섹션은 이 값을 잘못 입력한 경우"Invalid provider"오류가 발생한다고 설명합니다.- CLI에서
/model를 실행하세요. Factory 자체 모델 아래의 별도 사용자 지정 모델 섹션에 항목이 표시되며, 설정한displayName가 레이블로 사용됩니다. Factory는 설정 파일을 감시하므로 저장만 하면 됩니다. 다시 시작할 필요가 없습니다. - 인사말 대신 파일을 읽고 수정하는 작업을 지정하세요. Droid는 거의 모든 작업에서 도구 호출에 의존하므로, 단순한 채팅 턴으로는 그 동작을 확인할 수 없습니다. 그런 다음
/cost를 실행하세요. 여기에서 Factory가 캐시 적중률을 표시합니다. Kunavo는 Anthropic의cache_control마커를 기본 지원하지만, 일반 Chat Completions 제공자에 대해서는 Factory가 “캐싱은 제공자에 따라 다르며 보장할 수 없다”고 안내합니다.
Factory의 Custom Models (BYOK) 페이지에서 확인했습니다(2026년 9월 21일 기준). 서드파티 설정은 변경될 수 있으므로, 여기의 필드 이름이 실제 화면과 다르면 이 문서가 아니라 해당 페이지를 기준으로 삼으세요.
클라이언트를 디버깅하기 전에 확인할 사항
한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 JSON이 반환되면 동일한 base URL과 키가 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"}]}'필드에 입력할 model id
모든 텍스트 모델은 model id로 접근할 수 있습니다. 현재 목록은 GET /v1/models이며, 가격이 포함된 카탈로그는 모델 페이지에서 확인할 수 있습니다. 요금은 토큰 100만 개당 USD 기준이며 입력 / 출력 순서입니다.
| 모델 ID | Kunavo 입력/출력 | Factory Droid에서의 위치 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 기본 작업 모델 — provider: "anthropic" 항목에 입력 |
claude-opus-5 | $3.50 / $17.50 | 잘못 변경하면 비용이 많이 드는 변경을 계획하는 경우입니다. 동일한 anthropic 항목을 사용하세요. |
claude-haiku-4-5 | $0.70 / $3.50 | 저렴한 턴과 파일 분류가 필요한 경우이며, 물량이 비용을 좌우합니다. 동일한 anthropic 항목을 사용하세요. |
gpt-5-6-sol | $2.00 / $12.00 | 다른 계열의 모델로 교차 확인 — generic-chat-completion-api 항목이 필요 |
Droid에서 사용자 지정 모델로 할 수 없는 작업
Factory의 공식 문서에 명시된 제한은 세 가지입니다. 각 제한은 위 구성이 작동하는지 여부가 아니라, 구성으로 무엇을 기대할 수 있는지를 바꿉니다.
- 로컬 환경에서만 사용할 수 있습니다. Factory의 BYOK 페이지에 따르면 사용자 지정 모델은 로컬
settings.json을 읽는 Droid CLI와 데스크톱 앱에서 사용할 수 있으며, “Factory의 호스팅 웹 또는 모바일 플랫폼에는 표시되지 않습니다”. 호스팅 제품을 통해 위임한 작업은 여기에 어떤 키를 설정했든 계속 Factory 비용이 청구되는 추론을 사용합니다. - 관리자가 기능을 끌 수 있습니다. Factory의 엔터프라이즈 제어 문서에는 사용자 BYOK를 완전히 비활성화하거나 모든 사용자 지정 모델을 승인된 호스트 하나로 고정하는
modelPolicy.allowCustomModels및allowedBaseUrls가 설명되어 있습니다. 관리되는 기기라면 파일 문제를 해결하기 전에 이 설정부터 확인하세요. - 요금제 비용은 그대로 부과됩니다. 여기에 키를 설정해도 Factory 요금제가 대체되는 것은 아닙니다. BYOK 허용량 초과 시 Factory가 청구하는 금액과 해당 허용량은 비용 안내에서 다루며, 이 페이지에서는 다시 산출하지 않습니다.
다른 곳에서 설정을 복사하기 전에 알아둘 함정이 하나 있습니다. Factory는 snake_case의 custom_models와 base_url가 포함된 기존 ~/.factory/config.json도 계속 불러와 settings.json와 병합하며, 이 파일에는 ${VAR_NAME} 확장이 적용되지 않는다고 설명합니다. 이 파일에 자리표시자로 작성된 키는 문자 그대로 전송됩니다. settings.json를 사용하세요.
자주 묻는 질문
Factory Droid에 사용자 지정 API 엔드포인트를 추가하려면 어떻게 하나요?
~/.factory/settings.json을 수정하세요(Windows에서는 %USERPROFILE%\.factory\settings.json). 여기에 customModels 배열을 추가합니다. 각 항목에는 필수 필드 세 가지인 model, baseUrl, provider와 선택 필드인 displayName, apiKey, authMode, maxOutputTokens, extraHeaders 등이 필요합니다. 이를 설정하는 양식은 없습니다. JSON 파일이 설정 인터페이스입니다. Factory가 파일을 감시하므로 저장한 다음 CLI에서 /model을 실행하면 별도의 "Custom models" 제목 아래에 항목이 표시됩니다.
Factory Droid의 baseUrl 끝에 /v1을 붙여야 하나요?
provider 값에 따라 다르며, Factory 문서는 문장 대신 Provider 참조표로 이를 명확히 설명합니다. Anthropic 행에는 경로가 없는 https://api.anthropic.com이 나와 있으므로 provider가 "anthropic"이면 기본 주소만 사용합니다. Kunavo의 경우 https://api.kunavo.com입니다. 표의 모든 Chat Completions 행에는 /v1 루트가 포함되어 있습니다(https://api.openai.com/v1, https://openrouter.ai/api/v1). 따라서 provider가 "generic-chat-completion-api"이면 https://api.kunavo.com/v1을 사용합니다. Droid는 경로를 직접 덧붙이므로 Anthropic 항목에 /v1을 넣으면 /v1/v1/messages를 요청하게 되고, 인증 오류가 아니라 404를 반환합니다.
타사 엔드포인트에서 Claude 모델을 사용하려면 어떤 provider 값을 입력해야 하나요?
"anthropic"을 사용하세요. Factory는 세 가지 provider 값을 문서화하고 있으며, 각 값은 와이어 프로토콜을 선택합니다. "/v1/messages"의 Anthropic Messages API에는 "anthropic", OpenAI Responses API에는 "openai", OpenAI Chat Completions에는 "generic-chat-completion-api"를 사용합니다. 이 값은 요금을 청구하는 주체가 아니라 엔드포인트가 지원하는 프로토콜을 나타냅니다. 따라서 "/v1/messages"에 응답하는 게이트웨이에는 키가 어느 계정에 속하는지와 관계없이 "anthropic"을 사용합니다. Factory는 공식 OpenAI 또는 Anthropic API를 호출하는 경우가 아니라면 "generic-chat-completion-api"를 사용하라고 안내합니다. 다만 이는 제공되는 프로토콜에 관한 지침이며, 엔드포인트가 두 프로토콜을 모두 지원한다면 원하는 프로토콜을 선택할 수 있습니다.
Factory Droid에서 provider가 올바르지 않다고 나오거나 사용자 지정 모델이 표시되지 않는 이유는 무엇인가요?
Factory의 문제 해결 섹션에는 세 가지 원인이 나와 있습니다. 선택기에 모델이 표시되지 않는다면 보통 settings.json의 JSON 구문 오류이거나 필수 필드인 model, baseUrl, provider가 누락된 경우입니다. "Invalid provider" 오류는 철자를 잘못 입력했다는 뜻입니다. 값은 anthropic, openai, generic-chat-completion-api 중 하나와 정확히 일치해야 합니다. 인증 오류라면 키 또는 기본 URL 문제입니다. Factory는 기본 URL이 제공자의 문서와 일치하는지 확인하라고 안내합니다. 먼저 위의 curl로 클라이언트 외부에서 원인을 구분하세요. JSON이 반환되면 엔드포인트와 키는 정상이며, 문제는 설정 파일에 있습니다.