문서

문서

Jan Agent

Jan Agent에는 추론 엔진이 포함되어 있지 않으므로 항상 사용자가 지정한 엔드포인트를 호출합니다. jan config set 한 줄로 Kunavo 설정을 ~/.jan/config.toml에 기록하면 터미널 에이전트에서 키 하나로 Claude와 GPT를 사용할 수 있습니다.

`jan config set --base-url https://api.kunavo.com/v1` 한 줄로 Kunavo를 ~/.jan/config.toml에 기록하며, 추론 엔진을 제공하지 않는 Jan Agent 미리보기 CLI가 해당 키로 실행됩니다

jan config set — ~/.jan/config.toml에 기록
# Jan Agent is a preview on a nightly channel — check your build first.
jan --version

jan config set \
  --provider kunavo \
  --api-key sk-kn-... \
  --base-url https://api.kunavo.com/v1 \
  --model claude-sonnet-5 \
  --model claude-haiku-4-5 \
  --api-type openai

jan config list   # configured providers as JSON, keys redacted
두 와이어 유형 모두 기본 URL 끝에 /v1를 붙입니다. Jan은 경로만 덧붙입니다. contributing-a-provider 페이지에는 로그인 시 “키를 GET {base_url}/models에 대해 검증한다”고 나와 있고, providers 페이지에는 세션에서 처음 /model를 열 때 구성된 항목에 GET /models를 질의한다고 설명되어 있습니다. 해당 문서에 나오는 모든 기본 URL은 /v1로 끝납니다. jan cli models list 예시의 Anthropic 주소도 마찬가지입니다. 따라서 --api-type anthropic에도 https://api.kunavo.com/v1를 입력합니다. 이는 같은 접미사를 붙이면 /v1/v1/messages가 되어 404를 반환하는 Claude Code 및 공식 Anthropic SDK와 반대되는 규칙입니다. 오류에 경로가 중복되어 표시된다면 어떤 규칙을 적용 중인지 알 수 있습니다.
Jan Agent는 프리뷰이며, 문서에서도 이를 명시합니다. 빠른 시작 안내에 따르면 dev의 설치 프로그램은 agent-nightly 채널에서 가져옵니다. “나이틀리 수준의 빌드를 예상하세요.” 인용할 태그 지정 릴리스가 없으므로 jan --version를 실행하고 이 설정과 함께 표시되는 버전을 기록하세요. 아래 플래그는 페이지 하단에 표시된 날짜 기준으로 문서를 확인한 내용이며, 나이틀리 빌드에서는 플래그 이름이 바뀔 수 있습니다. 소스 빌드(scripts/install-jan-agent.sh --source)는 자동 업데이트되지 않으므로 버전을 고정하는 한 가지 방법이 됩니다.
아래 날짜 기준으로 Jan의 공식 문서에서 이 구성을 확인했습니다. Kunavo는 Jan Agent로 자체 엔드포인트를 호출해 본 적이 없습니다. 세션, 스트리밍 턴, 도구 왕복 호출을 테스트하지 않았으며, 이 계열의 다른 클라이언트도 마찬가지입니다. 설정 페이지가 공개되어 있다고 해서 호환성 테스트가 이루어진 것은 아닙니다. 이 구성을 시도하는 동안 현재 작동 중인 연결 방법을 사용할 수 있도록 유지하세요. 그리고 jan config unset --provider kunavo만 실행하면 원래 설정으로 되돌릴 수 있다는 점을 기억하세요.
Kunavo는 임베딩, 텍스트 음성 변환, 음성 텍스트 변환 모델을 제공하지 않으므로 Kunavo 제공자 항목은 채팅에만 응답합니다. Jan Agent는 그 이상을 요구하지 않습니다. 메모리는 벡터 저장소가 아니라 <project>/.jan/agent/memory/ 아래의 일반 파일로 관리하므로 에이전트 자체 작업 흐름에서 다른 종류의 모델이 필요하지 않습니다.
아직 키가 없나요? Kunavo 계정을 만들고, 키를 생성한 다음(키는 sk-kn-로 시작합니다) $10부터 크레딧을 추가하세요. 호출 비용은 해당 잔액에서 차감되며 실패한 호출에는 요금이 부과되지 않습니다. 그러면 대시보드가 Jan Agent 설정 화면에서 열립니다.

단계별 안내

  1. /app/keys에서 키를 생성해 복사하세요. 키는 한 번만 표시됩니다.
  2. 설정하려는 대상이 jan --version인지 확인하세요. Jan Desktop에는 jan로 실행하는 CLI도 포함되어 있지만 명령 구성이 다릅니다. 나머지 명령을 입력하기 전에 jan config set --help 목록에 --base-url가 있는지 확인하세요.
  3. 위의 jan config set 명령을 실행하세요. --provider은 고정 목록에서 선택하는 이름이 아니라 직접 정하는 ID입니다. 문서의 로컬 하드웨어 예시에서는 --provider local를 사용합니다. --model은 반복해서 사용할 수 있으며, 기존 목록에 추가하는 대신 목록 전체를 바꿉니다.
  4. jan config list(키는 마스킹됨) 또는 파일 자체의 jan config path로 설정이 적용되었는지 확인한 다음, jan cli models list를 실행해 모든 제공자가 제공하는 모델을 확인하세요. 직접 입력한 모델 ID는 엔드포인트 목록에서 사라져도 유지됩니다. 반면 jan cli models refresh --provider kunavo는 엔드포인트 목록을 기준으로 삼습니다.
  5. 프로젝트 디렉터리로 이동해 jan를 실행한 다음 /model로 모델을 선택하세요. 첫 실행에는 jan --plan를 권장합니다. 읽기 전용이므로 프로토콜이 맞지 않으면 디스크에 변경 사항을 쓰기 전에 확인할 수 있습니다.
  6. 파일을 수정하는 작업을 지정하세요. Jan Agent는 에이전트이므로 첫 실행에서 도구 호출과 스트리밍을 확인해야 합니다. 일부만 호환되는 엔드포인트에서는 이 기능부터 문제가 생길 수 있지만, 인사말로는 어느 쪽도 확인할 수 없습니다.

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

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

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

한 번의 요청으로 문제가 엔드포인트, 키 또는 구성 파일 중 어디에 있는지 판단할 수 있습니다. 이 요청에서 JSON이 반환되면 동일한 base URL과 키가 Jan Agent에서 작동합니다.

# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
  -H "Authorization: Bearer sk-kn-..."

필드에 입력할 model id

모든 텍스트 모델은 model id로 접근할 수 있습니다. 현재 목록은 GET /v1/models이며, 가격이 포함된 카탈로그는 모델 페이지에서 확인할 수 있습니다. 요금은 토큰 100만 개당 USD 기준이며 입력 / 출력 순서입니다.

모델 IDKunavo 입력/출력Jan Agent에서의 위치
claude-sonnet-5$1.40 / $7.00기본 작업 모델 — --model 뒤에 첫 번째로 입력할 ID
claude-opus-5$3.50 / $17.50잘못 선택하면 비용이 많이 드는 계획입니다. jan --plan과 함께 사용하세요.
claude-haiku-4-5$0.70 / $3.50저비용 턴: 분류, 요약, 하루 종일 실행되는 작업 루프
gpt-5-6-sol$2.00 / $12.00같은 키와 기본 URL을 사용하는 다른 계열의 모델로 다른 관점 확보
gpt-5-6-terra$0.70 / $4.20openai api-type을 사용하는 긴 컨텍스트 읽기
월정액 없이 선불 잔액에서 토큰별로 청구됩니다. billing을 참고하세요. 반복되는 컨텍스트(에디터나 채팅 클라이언트가 보내는 데이터의 대부분)에서는 모델 선택보다 프롬프트 캐싱이 청구액에 더 큰 영향을 줍니다.

Jan API 키라고 불리는 서로 다른 두 가지 항목

두 항목은 같은 파일에 저장되지만 의미는 정반대입니다. 따라서 다른 항목을 예상하는 경우 jan config list가 잘못된 것처럼 보일 수 있습니다.

무엇어디서 가져오는가무엇에 대한 인증인가
jan login셸에서 또는 콘솔의 /login을 사용해 셀프 호스팅 백엔드 Tokamak에 로그인하기자체 Tokamak 배포 환경입니다. Jan Agent가 받은 키를 ~/.jan/config.toml에 대신 기록합니다
jan config set --api-key이미 보유한 엔드포인트 인증 정보 — 여기서는 Kunavo의 sk-kn- 키요청당 요금이 부과되는 해당 엔드포인트입니다. 이 페이지에서 다루는 항목입니다

Jan Desktop은 둘 다 발급하지 않습니다. 계정이 없으므로 발급할 것이 없습니다. 로컬 API 서버에는 직접 만든 키를 사용하며, 이는 또 다른 세 번째 의미이자 다른 호스트에 해당합니다.

Jan Desktop에서 전달되는 정보와 그 한계

Jan Agent는 공급자 설정을 네 가지 출처에서 읽으며, 각 출처는 위에 있는 출처보다 우선합니다. 두 번째 출처는 많은 사람을 놀라게 합니다.

  1. ~/.jan/config.toml — 기본 파일이며, jan config set가 기록하는 유일한 파일입니다.
  2. Jan Desktop의 settings.json — 상속 전용입니다. Agent에 설정하지 않은 공급자를 추가하지만, 이미 설정한 공급자를 덮어쓰지 않으며 이 파일에 다시 기록하지도 않습니다.
  3. 프로젝트의 agent.toml에 있는 [provider] 블록 — 프로젝트별로 명시적으로 선택하므로 앞의 두 출처보다 우선합니다. 일반적으로 이 파일은 커밋되므로 api_key를 여기에 넣지 마세요.
  4. 명령줄의 --provider / --api-key 또는 JAN_API_KEY / <PROVIDER>_API_KEY — 가장 명시적이면서 가장 일시적인 설정입니다.

잘못된 항목을 디버깅하기 전에 알아둘 점이 두 가지 있습니다. jan config list에는 공급자가 없다고 나오지만 jan cli models list에는 여러 개가 표시될 수 있습니다. 후자에는 상속된 Desktop 공급자가 포함되지만, 이들은 ~/.jan/config.toml에 저장되지 않습니다. 또한 상속된 공급자는 새로 고쳐지지 않습니다. 다시 쓸 항목이 여기에 없기 때문입니다. Kunavo의 모델 목록을 최신 상태로 유지하려면 자체 jan config set 항목으로 추가해야 하며, 위 블록이 바로 그런 항목을 만듭니다.

두 공급자가 같은 모델 ID를 제공하는 경우

Kunavo는 claude-sonnet-5 같은 ID를 제공하며, 공급자 항목을 벤더에 직접 연결해도 같은 ID를 제공할 수 있습니다. Jan Agent는 하나를 선택해야 하며, 문서에 명시된 순서는 다음과 같습니다. 먼저 공급자의 models 목록에서 정확히 일치하는 항목을 찾고, 다음으로 설정된 공급자를 지정하는 <provider>/<model> 접두사를 확인합니다. 같은 ID를 제공하는 항목이 여러 개라면 인증 정보가 있는 공급자가 키가 없는 공급자보다 우선합니다. 따라서 kunavo/claude-sonnet-5를 사용해 원하는 공급자를 지정할 수 있습니다. 이 한정자는 Jan에서만 사용되며, 공급자 접두사가 붙은 ID를 업스트림에서 거부하므로 요청을 보내기 전에 제거됩니다.

콘솔에서 같은 항목 설정하기

플래그를 직접 입력하고 싶지 않다면 /settings > providers에서 동일한 ~/.jan/config.toml 항목을 관리할 수 있습니다. a를 누르면 name, base url, api key 및 공백으로 구분한 models를 입력하는 양식이 열립니다. 이 양식에서만 가능한 작업이 두 가지 있습니다. 원격 엔드포인트에는 키가 평문으로 전송되지 않도록 기본 URL이 https://(로컬호스트 엔드포인트라면 http://)이어야 합니다. Kunavo는 https://이므로 문제가 되지 않습니다. 또한 항목을 수정할 때 API 키 필드에는 (unchanged)가 표시되며, 입력하지 않으면 저장된 키를 유지합니다. 필드를 비우면 키를 그대로 두는 대신 삭제합니다.

자주 묻는 질문

Jan Agent를 사용자 지정 API 엔드포인트에 연결하려면 어떻게 하나요?

다음 명령 하나로 설정할 수 있습니다. jan config set --provider <id> --api-key <key> --base-url <url> --model <model> --api-type openai. 공급자 ID는 고정 목록에서 고르는 이름이 아니라 직접 정하는 값입니다. --model은 여러 번 지정할 수 있으며 기존 목록을 대체합니다. --api-type의 기본값은 OpenAI 호환이므로 OpenAI 형식 엔드포인트라면 생략할 수 있습니다. 항목은 ~/.jan/config.toml에 기록되며, 콘솔에서 /settings > providers를 통해서도 수정할 수 있습니다. Jan의 공급자 추가 안내 페이지에 따르면 일반적인 OpenAI 호환 엔드포인트는 코드 없이 이 설정만으로 사용할 수 있습니다.

Jan Agent의 기본 URL 끝에 /v1을 붙여야 하나요?

네. Anthropic 와이어 유형에서도 마찬가지입니다. Jan은 경로만 덧붙입니다. 공급자 추가 안내 페이지에는 로그인할 때 GET {base_url}/models로 키를 검증한다고 나와 있고, 공급자 페이지에는 세션에서 /model을 처음 열 때 설정된 항목의 GET /models를 요청한다고 나와 있습니다. 덧붙이는 경로가 /v1/models가 아니라 /models이므로 저장된 기본 URL은 이미 /v1 루트여야 합니다. Kunavo의 경우 https://api.kunavo.com/v1입니다. Jan 문서에 나오는 모든 기본 URL은 같은 방식으로 끝나며, jan cli models list 예시의 Anthropic 항목도 마찬가지입니다. 이는 /v1을 추가하면 /v1/v1/messages가 되어 404가 발생하는 Claude Code 및 공식 Anthropic SDK와 정반대입니다.

jan login과 jan config set --api-key는 어떻게 다른가요?

두 명령은 서로 다른 대상에 인증합니다. jan login은 셀프 호스팅 백엔드 Tokamak에 로그인하고, 받은 키를 ~/.jan/config.toml에 저장합니다. 즉, 자체 배포 환경에 로그인하는 명령입니다. jan config set --api-key는 이미 보유한 엔드포인트 인증 정보를 저장하며, Kunavo 같은 타사 공급자를 사용할 때 쓰는 명령입니다. Jan Desktop 자체는 발급할 계정이 없으므로 둘 다 발급하지 않습니다. 로컬 API 서버가 요구하는 키는 직접 만드는 문자열로, 이 표현의 세 번째 의미입니다.

jan config list에는 아무것도 표시되지 않는데 jan cli models list에는 모델이 표시되는 이유는 무엇인가요?

두 명령이 서로 다른 항목을 읽기 때문입니다. jan config list는 ~/.jan/config.toml에 저장된 내용만 표시하지만, jan cli models list에는 Jan Desktop에서 상속한 공급자도 포함되며 이들은 해당 파일에 저장되지 않습니다. Jan 문서에서도 이를 명시합니다. 실제로 상속된 공급자는 새로 고쳐지지 않습니다. 다시 쓸 항목이 없기 때문입니다. 공급자의 모델 목록을 최신 상태로 유지하려면 먼저 jan config set으로 추가하세요.

Anthropic 계정 없이 Jan Agent에서 Claude 모델을 실행할 수 있나요?

네. Jan Agent에는 추론 엔진이 포함되어 있지 않으므로 모델은 항상 설정한 엔드포인트에서 실행되며, --api-type은 벤더가 아니라 와이어 프로토콜을 지정합니다. Claude ID는 설정한 기본 URL에서 확인되므로 보유한 인증 정보는 해당 엔드포인트의 것입니다. Kunavo는 하나의 키로 OpenAI 호환 인터페이스에서 Claude 및 GPT ID를 제공합니다. 이 구성은 클라이언트에서 직접 시험한 결과가 아니라 Jan 자체 문서를 바탕으로 작성되었습니다. Jan Agent 자체도 나이틀리 채널의 프리뷰 버전이므로, 플래그가 실제로 적용되는 빌드는 jan --version으로 확인하세요.

Jan Agent가 모든 요청에서 404를 반환합니다. 무엇이 문제인가요?

대부분 기본 URL 문제입니다. /v1이 빠지면 Jan은 원본 호스트에 /models 및 /chat/completions를 요청해 인증 실패가 아니라 404를 반환합니다. 오류에 /v1이 중복된 /v1/v1이 표시되면 이미 해당 접미사가 있는 기본 URL에 다시 추가한 것입니다. 먼저 클라이언트 외부에서 같은 키와 일반 curl을 사용해 엔드포인트에 GET /v1/models를 호출하세요. JSON이 반환되면 엔드포인트와 키는 정상이고 설정 항목에 문제가 있습니다. 401이면 키 문제이고, 404이면 URL 문제입니다. 그런 다음 jan config path를 확인하고 저장된 base_url 값을 직접 읽으세요.