문서

문서

Factory Droid

Droid의 사용자 지정 모델은 필수 필드 세 개가 있는 JSON 배열입니다. 잘못 해석하기 쉬운 항목은 baseUrl이며, 올바른 형식은 선택한 세 가지 공급자 값 중 무엇인지에 따라 달라집니다.

~/.factory/settings.json의 customModels 항목 — model, baseUrl, provider — 으로 Droid를 Anthropic Messages 또는 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는 한 항목에만 포함되고 다른 항목에는 포함되지 않습니다. 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 참조를 확인하세요.
아래 날짜 기준으로 Factory의 공식 문서에서 이 구성을 확인했습니다. Kunavo는 Droid CLI로 자체 엔드포인트를 호출해 본 적이 없습니다. 세션, 스트리밍 턴, 도구 왕복 호출은 물론이고, 이 계열의 다른 클라이언트에서도 테스트하지 않았습니다. 설정 페이지가 공개되어 있다고 해서 테스트가 이루어진 것은 아닙니다. Factory도 이에 상응하는 면책 내용을 밝힙니다. Factory의 표현에 따르면 공식 API를 사용하는 Anthropic 및 OpenAI 모델만 “완전히 테스트하고 벤치마킹”했습니다. 아래의 curl 명령은 10초면 확인할 수 있는 부분입니다. 클라이언트 동작은 사용자와 Factory 사이의 문제입니다.
authMode는 생략할 수 있습니다. Factory 문서는 기본값인 provider-default가 자격 증명을 x-api-key에 담아 전송한다고 설명하며, Kunavo의 Messages 엔드포인트도 해당 헤더와 Authorization: Bearer를 모두 허용합니다. Bearer 형식을 명시적으로 사용하려면 Factory 문서에 따라 provider: "anthropic"에는 authMode: "bearer"를 지정하면 되며, 여기서도 작동합니다.
아직 키가 없나요? Kunavo 계정을 만들고, 키를 생성한 다음(키는 sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 Factory Droid 설정 화면에서 열립니다.

단계별 안내

  1. /app/keys에서 키를 만들고 복사하세요. 키는 한 번만 표시됩니다. Droid를 실행할 셸에서 키를 KUNAVO_API_KEY로 내보내면 키 자체를 설정 파일에 저장하지 않아도 됩니다.
  2. ~/.factory/settings.json를 열고(없으면 만드세요) 위의 customModels 배열을 추가합니다. Factory가 필수로 지정한 필드는 정확히 세 가지, model, baseUrl, provider입니다. displayName는 선택기에 표시되는 레이블입니다.
  3. provider의 철자를 확인하세요. 값은 반드시 anthropic, openai, generic-chat-completion-api 중 하나와 정확히 일치해야 합니다. Factory의 문제 해결 섹션은 이 값을 잘못 입력한 경우 "Invalid provider" 오류가 발생한다고 설명합니다.
  4. CLI에서 /model를 실행하세요. Factory 자체 모델 아래의 별도 사용자 지정 모델 섹션에 항목이 표시되며, 설정한 displayName가 레이블로 사용됩니다. Factory는 설정 파일을 감시하므로 저장만 하면 됩니다. 다시 시작할 필요가 없습니다.
  5. 인사말 대신 파일을 읽고 수정하는 작업을 지정하세요. Droid는 거의 모든 작업에서 도구 호출에 의존하므로, 단순한 채팅 턴으로는 그 동작을 확인할 수 없습니다. 그런 다음 /cost를 실행하세요. 여기에서 Factory가 캐시 적중률을 표시합니다. Kunavo는 Anthropic의 cache_control 마커를 기본 지원하지만, 일반 Chat Completions 제공자에 대해서는 Factory가 “캐싱은 제공자에 따라 다르며 보장할 수 없다”고 안내합니다.

Factory의 Custom Models (BYOK) 페이지에서 확인했습니다(2026년 9월 21일 기준). 서드파티 설정은 변경될 수 있으므로, 여기의 필드 이름이 실제 화면과 다르면 이 문서가 아니라 해당 페이지를 기준으로 삼으세요.

이것이 요약본입니다. 전체 안내—모델 선택, 실제 세션 비용, 실패 유형—는 Factory Droid 비용 안내에 있습니다.

클라이언트를 디버깅하기 전에 확인할 사항

한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 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 기준이며 입력 / 출력 순서입니다.

모델 IDKunavo 입력/출력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 항목이 필요
월정액 없이 선불 잔액에서 토큰별로 청구됩니다. billing을 참고하세요. 반복되는 컨텍스트(에디터나 채팅 클라이언트가 보내는 데이터의 대부분)에서는 모델 선택보다 프롬프트 캐싱이 청구액에 더 큰 영향을 줍니다.

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이 반환되면 엔드포인트와 키는 정상이며, 문제는 설정 파일에 있습니다.