Claude Code
Anthropic의 터미널 코딩 에이전트를 PleumRouter 키 하나로 연결합니다.
Claude Code는 터미널에서 코드베이스를 읽고 고치며 명령을 실행하는 코딩 에이전트입니다. ANTHROPIC_BASE_URL만 PleumRouter로 바꾸면 Claude Code는 평소처럼 Anthropic Messages 프로토콜(/v1/messages)로 요청하고, PleumRouter가 이를 받아 모델로 보냅니다. 별도 프록시는 필요 없습니다. 데스크톱 앱은 Claude Desktop을 보세요.
빠른 시작#
Claude Code 설치
이미 설치했다면 건너뛰세요. 네이티브 설치를 권장하며, npm 설치는 Node.js가 필요합니다.
install.shmacOS·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 --versionNode.js가 필요합니다. `sudo`로 설치하지 마세요.
npm install -g @anthropic-ai/claude-code claude --versionAPI 키 발급
대시보드의 API 키 페이지에서
plm_로 시작하는 키를 만들어 복사하세요. 처음에는 일·주·월 예산을 함께 걸어 두는 것을 권장합니다.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`~/.zshrc`나 `~/.bashrc`에 넣고 새 터미널을 여세요. 키를 다른 변수에서 가져온다면 그 변수가 먼저 정의돼야 합니다. `.env` 파일은 읽지 않습니다.
export PLEUM_API_KEY="plm_xxxxxxxxxxxxxxxx" # ANTHROPIC_BASE_URL is the origin WITHOUT /v1 — Claude Code appends /v1/messages itself. export ANTHROPIC_BASE_URL="https://apirouter.pleum.ai" export ANTHROPIC_AUTH_TOKEN="$PLEUM_API_KEY" export ANTHROPIC_API_KEY="" # must be explicitly empty # then reload: source ~/.zshrc (or open a new terminal)`~/.claude/settings.json`의 `env`에 넣으면 모든 프로젝트에 적용됩니다. `pleum wire claude`는 주소와 키, `API_TIMEOUT_MS`, `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`을 이 파일에 병합하고, `ANTHROPIC_API_KEY`는 값을 비우는 대신 항목을 지웁니다.
{ "env": { "ANTHROPIC_BASE_URL": "https://apirouter.pleum.ai", "ANTHROPIC_AUTH_TOKEN": "plm_xxxxxxxxxxxxxxxx", "ANTHROPIC_API_KEY": "", "API_TIMEOUT_MS": "3000000" } }저장된 Claude 로그인 지우기
예전에 Claude 계정으로 로그인한 적이 있다면
/logout을 한 번 실행하고 Claude Code를 다시 시작하세요. 로그인 정보와 PleumRouter 키가 함께 있으면 인증 충돌 경고가 뜨고 모델을 찾지 못하는 오류로 이어질 수 있습니다. 로그인한 적이 없다면 건너뛰세요.Claude Code> /logout # then quit and start claude again실행하고 확인
/status에Auth token: ANTHROPIC_AUTH_TOKEN과 PleumRouter 주소가 보이면 연결된 것입니다.Login method에 Claude 계정이 보이면 환경변수가 적용되지 않은 것이니 터미널을 새로 열어 다시 실행하세요. 요청 내역은 사용량에서 바로 확인할 수 있습니다.Terminalcd 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_KEY | PleumRouter 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는 이 표시를 떼고 라우팅합니다.
# 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로 갑니다.
- 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/messages | ANTHROPIC_BASE_URL에 /v1을 붙인 경우입니다. https://apirouter.pleum.ai(루트)로 바꾸세요. |
| 401 Unauthorized | /status의 Auth token이 ANTHROPIC_AUTH_TOKEN인지 보세요. 키가 빈 값으로 전달된다면, 셸 프로필에서 키를 정의하는 줄이 그 키를 쓰는 줄보다 앞에 있는지 확인하세요. |
| model not found | Claude 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 값이 우선합니다. |