어떤 코딩 에이전트든 PleumRouter 붙이기
OpenAI 호환이라, 쓰던 에이전트에 base_url 한 줄만 바꾸면 됩니다.
OpenAI Compatible provider를 지원하는 에이전트라면 base_url을 https://apirouter.pleum.ai/v1로, 키를 plm_…로 바꾸기만 하면 그대로 동작합니다. 아래는 인기 에이전트별 설정 예시입니다.1. 공통 — base_url과 API 키#
먼저 가입 후 대시보드 → API 키에서 키를 발급받으세요 (키는 plm_로 시작). 어떤 에이전트든 필요한 값은 base_url(https://apirouter.pleum.ai/v1)과 키 두 가지뿐입니다.
export OPENAI_API_BASE=https://apirouter.pleum.ai/v1
export OPENAI_API_KEY=plm_xxxxxxxxxxxxxxxx
# Some agents (OpenCode, Crush) reference PLEUM_API_KEY — same key, set both.
export PLEUM_API_KEY=plm_xxxxxxxxxxxxxxxx2. IDE · GUI 에이전트#
다음 에이전트는 설정에서 provider로 OpenAI Compatible(또는 Custom OpenAI)을 고르고 아래 값을 넣으면 됩니다 — Cline, Roo Code, Kilo Code, Cursor.
/v1까지 포함하고 키 칸을 비우면 안 됩니다. Kilo Code는 커스텀 base URL이 모델 목록 조회에 전달되지 않는 알려진 이슈(#681)가 있어 모델 ID를 직접 입력하세요.3. 터미널 · CLI 에이전트#
터미널 에이전트는 대부분 환경변수나 설정 파일로 OpenAI 호환 엔드포인트를 받습니다. Goose·OpenHands는 모델명 앞에 openai/ 접두사가 필요합니다.
- Codex
- Aider
- OpenCode
- Crush
- Goose
- OpenHands
- Qwen Code
- MiniMax Code
- MiMo Code
- OpenClaw
- Plandex
- Open Interpreter
- Gemini CLI
- Antigravity CLI
/v1beta로 붙습니다. GOOGLE_GEMINI_BASE_URL은 /v1beta 없는 루트입니다. 상세는 Gemini CLI· Antigravity CLI· Gemini API를 보세요. Antigravity 데스크톱 IDE는 공식 BYOK가 없습니다.4. Desktop 앱#
Dock에서 켜 두는 앱은 셸 환경변수를 못 읽습니다. pleum wire가 대시보드와 같은 POST /v1/keys로 plm_ 전용 키를 만들고 ~/.codex/config.toml·~/.claude/settings.json에 넣습니다.pleum launch는 세션용 격리 홈만 쓰고, Desktop은 사용자 홈 설정을 읽습니다. Codex는 supports_websockets = false와 Bearer http_headers가 필요합니다. Claude Code Desktop은 앱 안 Configure Third-Party Inference 폼을 쓰며 base URL에 /v1을 붙이지 마세요. 상세는 Codex· Claude Code· Cursor쿡북을 보세요.
5. 모델 ID와 자동 발견#
모델 ID는 GET /v1/models에서 확인하거나 모델 페이지에서 볼 수 있습니다. Cline·Continue·OpenCode 등은 이 목록을 자동으로 불러와 드롭다운을 채웁니다. OpenRouter 형식 (openai/gpt-5.5)으로 보내도 자동 변환됩니다.
curl https://apirouter.pleum.ai/v1/models \
-H "Authorization: Bearer plm_xxxxxxxxxxxxxxxx"6. 이미지 · 음성 · 영상 (직접 API 호출)#
이미지·음성·영상도 OpenAI 호환 엔드포인트로 직접 호출합니다 — 이미지 POST /v1/images/generations, TTS POST /v1/audio/speech, STT POST /v1/audio/transcriptions, 영상 POST /v1/video/generations(비동기 — job_id 반환 후 GET /v1/jobs/{job_id}로 폴링).MODEL_ID는 해당 모달리티를 지원하는 모델로 바꾸세요 — 모델 페이지 또는 GET /v1/models에서 확인할 수 있습니다.
# Image generation
curl https://apirouter.pleum.ai/v1/images/generations \
-H "Authorization: Bearer plm_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "model": "MODEL_ID", "prompt": "a red bicycle", "n": 1, "size": "1024x1024" }'
# Text-to-speech (returns audio bytes; cost in X-Cost-Krw header)
curl https://apirouter.pleum.ai/v1/audio/speech \
-H "Authorization: Bearer plm_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "model": "MODEL_ID", "input": "Hello there", "voice": "alloy" }' --output speech.mp3
# Speech-to-text (multipart upload)
curl https://apirouter.pleum.ai/v1/audio/transcriptions \
-H "Authorization: Bearer plm_xxxxxxxxxxxxxxxx" \
-F model=MODEL_ID -F file=@audio.mp3
# Video generation is async: POST returns a job_id, then poll GET /v1/jobs/{job_id}
curl https://apirouter.pleum.ai/v1/video/generations \
-H "Authorization: Bearer plm_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{ "model": "MODEL_ID", "prompt": "a drone shot over a forest" }'7. 더 많은 에이전트#
여기 안 적힌 에이전트도 대부분 같은 방식입니다. OpenAI 호환 base_url로 동작 — OpenHands, Open Interpreter, SWE-agent, Qwen Code, MetaGPT, GPT-Pilot, ChatDev, Tabby(채팅), Dyad, Plandex, bolt.diy, Forge, Kimi CLI, gptme, Letta 등. Anthropic 호환(/v1/messages)으로는 claude-code-router도 ANTHROPIC_BASE_URL로 붙습니다. LiteLLM 기반(Aider·OpenHands·Open Interpreter·SWE-agent·gptme)은 PleumRouter 자체가 게이트웨이라 LiteLLM 없이 바로 붙지만, 기존 LiteLLM proxy를 쓴다면 아래처럼 지정하세요 — api_base 끝에 /chat/completions를 붙이지 마세요.