본문으로 건너뛰기

Claude Code

Anthropic의 터미널 코딩 에이전트를 PleumRouter 키 하나로 연결합니다.

Claude Code는 터미널에서 코드베이스를 읽고 고치며 명령을 실행하는 코딩 에이전트입니다. ANTHROPIC_BASE_URL만 PleumRouter로 바꾸면 Claude Code는 평소처럼 Anthropic Messages 프로토콜(/v1/messages)로 요청하고, PleumRouter가 이를 받아 모델로 보냅니다. 별도 프록시는 필요 없습니다. 데스크톱 앱은 Claude Desktop을 보세요.

빠른 시작#

  1. Claude Code 설치

    이미 설치했다면 건너뛰세요. 네이티브 설치를 권장하며, npm 설치는 Node.js가 필요합니다.

    install.sh

    macOS·Linux·WSL은 curl, Windows는 PowerShell 명령을 쓰세요.

    # macOS · Linux · WSL
    curl -fsSL https://claude.ai/install.sh | bash
    
    # Windows PowerShell
    irm https://claude.ai/install.ps1 | iex
    
    claude --version
  2. API 키 발급

    대시보드의 API 키 페이지에서 plm_로 시작하는 키를 만들어 복사하세요. 처음에는 일·주·월 예산을 함께 걸어 두는 것을 권장합니다.

  3. PleumRouter로 연결

    세 가지 중 하나만 고르세요. 필요한 값은 주소(ANTHROPIC_BASE_URL), 키(ANTHROPIC_AUTH_TOKEN), 그리고 반드시 비워 둘 ANTHROPIC_API_KEY 세 개입니다. 모델은 따로 정하지 않아도 Claude Code의 기본 Claude 모델로 동작합니다.

    pleum launch

    설정 파일을 건드리지 않고 이번 실행에만 적용합니다.

    npm i -g pleumrouter
    pleum login            # sign in with the browser
    pleum launch claude    # runs Claude Code pointed at PleumRouter
  4. 저장된 Claude 로그인 지우기

    예전에 Claude 계정으로 로그인한 적이 있다면 /logout을 한 번 실행하고 Claude Code를 다시 시작하세요. 로그인 정보와 PleumRouter 키가 함께 있으면 인증 충돌 경고가 뜨고 모델을 찾지 못하는 오류로 이어질 수 있습니다. 로그인한 적이 없다면 건너뛰세요.

    Claude Code
    > /logout
    
    # then quit and start claude again
  5. 실행하고 확인

    /status에 Auth token: ANTHROPIC_AUTH_TOKEN과 PleumRouter 주소가 보이면 연결된 것입니다. Login method에 Claude 계정이 보이면 환경변수가 적용되지 않은 것이니 터미널을 새로 열어 다시 실행하세요. 요청 내역은 사용량에서 바로 확인할 수 있습니다.

    Terminal
    cd your-project
    claude
    
    > /status
    Auth token: ANTHROPIC_AUTH_TOKEN
    Anthropic base URL: https://apirouter.pleum.ai

Claude Code에서 PleumRouter를 쓰는 이유#

  • 선불 크레딧으로 사용한 만큼만 결제합니다. 도구 제작사의 구독과 별개로 크레딧이 차감됩니다.
  • 키마다 예산과 한도를 겁니다. API 키별 일·주·월 예산과 모델 허용 목록, 팀 예산으로 에이전트의 비용을 관리합니다.
  • 한 키로 여러 모델을 씁니다. Claude·GPT·Gemini·오픈 모델을 골라 쓰고, 공급자 장애 시 자동 재시도·폴백이 동작하며, 사용량은 대시보드에서 봅니다.

작동 방식#

Claude Code는 ANTHROPIC_BASE_URL이 가리키는 서버에 Anthropic Messages 형식(POST /v1/messages)으로 요청합니다. PleumRouter는 이 형식을 그대로 받아 스트리밍(SSE)·도구 호출·이미지·캐시 표시·생각 강도(/effort)를 고른 모델의 공급자 형식으로 바꿔 보내고, 응답을 다시 Anthropic 형식으로 돌려줍니다. 인증에는 ANTHROPIC_AUTH_TOKEN(Authorization: Bearer)을 씁니다. ANTHROPIC_API_KEY를 비워 두는 이유는, 값이 있으면 Claude Code가 이를 Anthropic 직접 키(x-api-key)로 다뤄 저장된 로그인과 충돌할 수 있기 때문입니다. 사용한 만큼 PleumRouter 크레딧에서 차감되며, 사고(thinking) 토큰도 출력 토큰에 포함돼 청구됩니다.

설정 레퍼런스#

항목설명
ANTHROPIC_BASE_URLhttps://apirouter.pleum.ai/v1이 없는 루트 주소입니다. Claude Code가 /v1/messages를 붙입니다.
ANTHROPIC_AUTH_TOKEN$PLEUM_API_KEYPleumRouter API 키. Authorization: Bearer로 전송됩니다.
ANTHROPIC_API_KEY""반드시 빈 값. Anthropic 직접 인증으로 넘어가지 않게 합니다.
API_TIMEOUT_MS3000000요청 타임아웃(50분). 긴 작업이 중간에 끊기지 않게 합니다.
ANTHROPIC_DEFAULT_OPUS_MODELclaude-opus-5-5선택. Opus 슬롯(어려운 추론)에 쓸 모델.
ANTHROPIC_DEFAULT_SONNET_MODELclaude-sonnet-5선택. Sonnet 슬롯(일반 코딩)에 쓸 모델.
ANTHROPIC_DEFAULT_HAIKU_MODELclaude-haiku-4-5선택. Haiku 슬롯(제목 생성 같은 가벼운 보조 작업)에 쓸 모델.
ANTHROPIC_DEFAULT_FABLE_MODELclaude-fable-5-1선택. Fable 슬롯(가장 어려운 장기 작업). /model에 Fable이 보이지 않으면 이 값을 넣으세요.
CLAUDE_CODE_SUBAGENT_MODELclaude-sonnet-5선택. 서브에이전트가 쓸 모델.
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY1선택. /model에 카탈로그 전체(GET /v1/models)가 추가돼 목록이 매우 길어집니다.

모델 선택#

따로 정하지 않으면 Claude Code는 자기 기본 Claude 모델 ID로 요청하고, PleumRouter가 이를 카탈로그의 같은 모델로 연결합니다. 다른 모델을 쓰거나 버전을 고정하려면 슬롯 변수에 모델 카탈로그의 ID를 넣으세요. claude-sonnet-latest처럼 -latest를 붙이면 그 계열의 최신 릴리스로, claude-opus-5-5@anthropic처럼 @공급자를 붙이면 그 공급자로만 보냅니다(이때는 다른 공급자로의 자동 폴백이 꺼집니다). 1M 컨텍스트 모델이라면 ID 끝에 [1m]을 붙이세요. 이 표시가 없으면 Claude Code는 200K로 가정해 대화를 일찍 압축합니다. PleumRouter는 이 표시를 떼고 라우팅합니다.

~/.zshrc
# Optional — catalog IDs from router.pleum.ai/models
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5[1m]"   # [1m] = 1M context
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5"
export ANTHROPIC_DEFAULT_FABLE_MODEL="claude-fable-5-1"
export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-5"

# Newest release of a family, or one provider only:
# export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-latest"
# export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5@anthropic"

Claude 모델을 쓰는 구성을 기준으로 설명합니다. GPT·Gemini·오픈 모델도 연결되지만 도구 호출 품질은 모델마다 다를 수 있습니다.

지원 범위#

기능상태설명
스트리밍(SSE)지원stream: true를 Anthropic SSE 이벤트로 돌려줍니다.
도구 호출지원tool_use/tool_result를 양방향 변환합니다.
이미지 입력지원고른 모델이 이미지를 받을 때 동작합니다.
프롬프트 캐싱지원Claude 모델에는 Claude Code가 붙인 캐시 표시를 그대로 전달합니다(보관 시간은 항상 5분). 표시가 없으면 자동 프롬프트 캐싱이 적용됩니다.
생각 강도(/effort)지원output_config.effort를 고른 모델의 추론 강도 설정으로 바꿔 전달합니다.
1M 컨텍스트 표시([1m])지원모델 ID 끝의 [1m]을 떼고 라우팅합니다.
확장 사고(thinking)일부사고는 수행되고 청구되지만, 사고 내용은 화면에 표시되지 않습니다(display: omitted).
/v1/messages/count_tokens일부정확한 토크나이저가 아닌 추정치를 돌려줍니다.
Fast mode(/fast)일부claude-opus-5-5를 Anthropic 공급자로 보낼 때(claude-opus-5-5@anthropic으로 고정) 더 빠른 출력 계층을 요청할 수 있고, 이 요청은 요금 2배(입력 $8/출력 $40, 1M 토큰)로 정산됩니다. 그 밖의 모델·공급자나 적용되지 않은 요청은 일반 속도·일반 요금으로 처리됩니다.
Remote Control·음성 입력미지원Claude 계정 로그인이 필요한 기능이라 게이트웨이 연결에서는 꺼집니다(Claude Code 공식 안내).
Claude가 아닌 모델일부연결되지만 도구 호출·추론 표시는 모델마다 다릅니다.

GitHub Actions#

공식 Claude Code GitHub Action도 같은 방식으로 연결됩니다. 저장소 시크릿 PLEUM_API_KEY에 plm_ 키를 넣고 아래처럼 두 곳에 쓰세요. 액션은 anthropic_api_key 입력이 있어야 실행되고, 실제 요청은 env의 ANTHROPIC_BASE_URL·ANTHROPIC_AUTH_TOKEN을 따라 PleumRouter로 갑니다.

.github/workflows/claude.yml
- name: Run Claude Code
  uses: anthropics/claude-code-action@v1
  with:
    anthropic_api_key: ${{ secrets.PLEUM_API_KEY }}
  env:
    ANTHROPIC_BASE_URL: https://apirouter.pleum.ai
    ANTHROPIC_AUTH_TOKEN: ${{ secrets.PLEUM_API_KEY }}

Claude Agent SDK#

Claude Agent SDK(Python·TypeScript)는 Claude Code를 런타임으로 쓰므로, 위와 같은 환경변수 세 개로 PleumRouter에 연결됩니다.

문제 해결#

증상원인과 조치
Claude Code가 로그인 화면을 띄웁니다게이트웨이 인증값을 찾지 못한 상태입니다. ANTHROPIC_AUTH_TOKEN을 셸 환경변수나 ~/.claude/settings.json의 env에 두세요. 프로젝트의 .claude/settings.json은 첫 실행 마법사가 끝난 뒤에만 적용됩니다.
인증 충돌 경고가 뜹니다저장된 Claude 로그인과 PleumRouter 키가 함께 있습니다. /logout 후 Claude Code를 다시 시작하세요. 셸에 예전 Anthropic 키(ANTHROPIC_API_KEY)가 남아 있다면 /logout으로는 지워지지 않으니 빈 값으로 덮어쓰세요.
404 /v1/v1/messagesANTHROPIC_BASE_URL에 /v1을 붙인 경우입니다. https://apirouter.pleum.ai(루트)로 바꾸세요.
401 Unauthorized/status의 Auth token이 ANTHROPIC_AUTH_TOKEN인지 보세요. 키가 빈 값으로 전달된다면, 셸 프로필에서 키를 정의하는 줄이 그 키를 쓰는 줄보다 앞에 있는지 확인하세요.
model not foundClaude Code가 카탈로그에 아직 없는 새 기본 모델 ID를 쓰거나 슬롯 변수에 오타가 있는 경우입니다. 슬롯 변수에 카탈로그의 ID를 넣으세요.
컨텍스트가 항상 200K로 표시됩니다모델 ID 끝에 [1m]을 붙이세요(1M 컨텍스트 모델만). 예: claude-sonnet-5[1m].
긴 작업이 도중에 끊깁니다API_TIMEOUT_MS를 3000000으로 늘리세요. pleum wire claude는 이 값을 함께 넣습니다.
/fast를 켜도 빨라지지 않습니다빠른 출력 계층은 claude-opus-5-5를 Anthropic 공급자로 보낼 때(claude-opus-5-5@anthropic으로 고정)에만 적용됩니다. 그 밖의 모델·공급자는 일반 속도·일반 요금으로 처리되므로 추가 비용이 없습니다.
사고 내용이 보이지 않습니다사고 내용은 표시하지 않도록 설계돼 있습니다. 사고 자체는 수행되므로 응답 품질에는 영향이 없습니다.
/model에 모델이 수백 개 나옵니다CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1이 켜져 있어서입니다. 지우면 내장 항목만 보입니다.
설정을 바꿨는데 그대로입니다열려 있는 Claude Code와 터미널을 모두 닫고 새 터미널에서 다시 실행하세요. 같은 변수를 셸과 settings.json에 둘 다 두면 settings.json 값이 우선합니다.

비용·보안 팁#

  • 키에 예산을 걸어 두세요. 코딩 에이전트는 한 작업에서 모델을 여러 번 호출하고 긴 컨텍스트를 반복해 보냅니다. API 키에 일·주·월 예산을 설정하면 비용을 예측하기 쉽습니다.
  • 키는 git에 올리지 마세요. 셸 프로필이나 설정 파일에 넣은 키가 저장소에 커밋되지 않게 하고, 유출이 의심되면 대시보드에서 바로 폐기한 뒤 새로 발급하세요.
  • 민감한 코드라면 처리 위치를 확인하세요. 프롬프트와 코드는 고른 모델의 공급자에게 전달됩니다. 데이터 처리 위치와 개인정보 마스킹으로 범위를 정할 수 있습니다.