본문으로 건너뛰기

주거 수영장

Credential Pools는 동일한 제공자를 위한 다수 API 열쇠 또는 OAuth 토큰을 등록하게 합니다. 1개의 열쇠가 비율 한계 또는 청구 할당량 때, Hermes는 다음 건강한 열쇠에 자동적으로 자전합니다 - 엇바꾸기 제공자 없이 당신의 세션를 살아 유지하세요.

이것은 fallback 제공 업체와 다릅니다. different 제공 업체로 전환합니다. Credential 풀은 동일한 프로비저스 교체입니다. fallback 제공자는 크로스 프로비저스 장애입니다. 풀은 첫 번째 시도 - 모든 풀 키가 배출되는 경우, then fallback 제공자는 활성화합니다.

어떻게 작동하나요?

Your request
→ Pick key from pool (round_robin / least_used / fill_first / random)
→ Send to provider
→ 429 rate limit?
→ Retry same key once (transient blip)
→ Second 429 → rotate to next pool key
→ All keys exhausted → fallback_model (different provider)
→ 402 billing error?
→ Immediately rotate to next pool key (24h cooldown)
→ 401 auth expired?
→ Try refreshing the token (OAuth)
→ Refresh failed → rotate to next pool key
→ Success → continue normally

빠른 시작

이미 .env에서 API 키 세트를 가지고 있다면, Hermes는 1 키 풀로 자동 발견됩니다. 풀에서 혜택을 얻으려면, 더 많은 키를 추가:

# Add a second OpenRouter key
hermes auth add openrouter --api-key sk-or-v1-your-second-key

# Add a second Anthropic key
hermes auth add anthropic --type api-key --api-key sk-ant-api03-your-second-key

# Add an Anthropic OAuth credential (requires Claude Max plan + extra usage credits)
hermes auth add anthropic --type oauth
# Opens browser for OAuth login

수영장 확인:

hermes auth list

산출:

openrouter (2 credentials):
#1 OPENROUTER_API_KEY api_key env:OPENROUTER_API_KEY ←
#2 backup-key api_key manual

anthropic (3 credentials):
#1 hermes_pkce oauth hermes_pkce ←
#2 claude_code oauth claude_code
#3 ANTHROPIC_API_KEY api_key env:ANTHROPIC_API_KEY
``←`는 현재 선택된 자격 증명을 나타냅니다.

## Interactive 관리 \{#interactive-management}

`hermes auth`를 인터렉티브 마법사에 대 한 subcommand 없이 실행:

```bash
hermes auth

이 풀 풀 상태를 보여주고 메뉴를 제공합니다:

What would you like to do?
1. Add a credential
2. Remove a credential
3. Reset cooldowns for a provider
4. Set rotation strategy for a provider
5. Exit

API 키와 OAuth (Anthropic, Nous, Codex)를 지원하는 공급자를 위해, 유형이 있는 교류 요청을 추가하십시오:

anthropic supports both API keys and OAuth login.
1. API key (paste a key from the provider dashboard)
2. OAuth login (authenticate via browser)
Type [1/2]:

CLI 명령

명령설명
hermes auth대화형 credential pool 관리 마법사
hermes auth list모든 pool과 credential 보기
hermes auth list <provider>특정 제공자의 pool 보기
hermes auth add <provider>credential 추가. 유형과 키는 프롬프트로 입력
hermes auth add <provider> --type api-key --api-key <key>API 키를 비대화형으로 추가
hermes auth add <provider> --type oauth브라우저 로그인으로 OAuth credential 추가
hermes auth remove <provider> <index>1-based index로 credential 제거
hermes auth reset <provider>cooldown/exhaustion 상태 초기화

회전 전략

자주 묻는 질문 hermes auth → "설정 회전 전략" 또는 config.yaml:

credential_pool_strategies:
openrouter: round_robin
anthropic: least_used
회사연혁채용 정보
fill_first (기본값)그것은 소진 될 때까지 첫 번째 건강한 열쇠를 사용, 다음 다음 이동
round_robin열쇠를 통해서 주기 균등하게, 각 선택 후에 자전
least_used항상 가장 낮은 요청 수로 키 선택
random건강한 열쇠 중 무작위 선택

오류 복구

풀은 다른 오류를 처리:

계정 정보채용 정보연락처
** 429 비율 제한**동일한 열쇠를 한 번 구부리십시오 (Transient). 두 번째 연속 429 다음 키로 회전1시간
**402 빌링/쿼타 **즉시 다음 키로 회전24시간
** 401 Auth 만료**OAuth 토큰을 먼저 상쾌하게 시도하십시오. 새로 고침하면 회전
** 모든 키 배기 * * 이름fallback_model 으로 구성

has_retried_429 플래그는 모든 성공적인 API 호출에 재설정하므로 단일 일시적인 429는 회전을 트리거하지 않습니다.

사용자 정의 Endpoint 풀

Custom OpenAI-compatible endpoints (Together.ai, RunPod, 로컬 서버)는 config.yaml의 custom_providers의 엔드포인트 이름으로 키 입력된 풀을 얻습니다.

hermes model를 통해 사용자 정의 엔드포인트를 설정하면 "Together.ai"또는 "Local (localhost:8080)"과 같은 이름을 자동 생성합니다. 이 이름은 풀 키가됩니다.

# After setting up a custom endpoint via hermes model:
hermes auth list
# Shows:
# Together.ai (1 credential):
# #1 config key api_key config:Together.ai ←

# Add a second key for the same endpoint:
hermes auth add Together.ai --api-key sk-together-second-key

주문 엔드 포인트 풀은 auth.json 아래 credential_poolcustom: 접두사로 저장됩니다

{
"credential_pool": {
"openrouter": [...],
"custom:together.ai": [...]
}
}

자동Discovery

Hermes는 여러 소스에서 자격 증명을 자동으로 발견하고 시작에 풀을 종자:

이름 *이름 *자동 입력?
환경 변수OPENROUTER_API_KEY, ANTHROPIC_API_KEY이름 *
OAuth 토큰 (auth.json)Codex 장치 코드, Nous 장치 코드이름 *
Claude 코드 자격~/.claude/.credentials.json예 (Anthropic)
헤르메스 PKCE 오아우트~/.hermes/auth.json예 (Anthropic)
사용자 정의 endpoint 설정config.yaml의 model.api_key예 (주문 마감)
수동 항목자주 묻는 질문 hermes auth addauth.json에서 주장

Auto-seeded Entry는 각 풀로드에서 업데이트됩니다. env var를 제거하면 풀 엔트리가 자동으로 실행됩니다. 수동 항목 (hermes auth add를 통해 추가) 자동 실행되지 않습니다.

대표 및 시약 공유하기

delegate_task를 통해 에이전트 스파셋 시약이 자동적으로 어린이와 공유될 때:

  • **Same 공급자 ** - 아이는 부모의 풀 풀 풀을받습니다, 비율 한계에 열쇠 교체를 가능하게 합니다
  • **Different 공급자 ** - 공급자의 자신의 풀 (구성하는 경우)
  • **구성 없음 ** — 아이는 상속한 단일 API 키로 돌아갑니다

이것은 하위 시약은 부모와 동일한 비율 제한 탄력에서 혜택을 의미합니다. 추가 구성이 필요하지 않습니다. Per-task credential 상승은 아이들이 동시 자전 열쇠 때 서로 충돌하지 않습니다.

실 안전

credential 풀은 모든 국가 mutations (select(), mark_exhausted_and_rotate(), try_refresh_current(), mark_used())의 스레드 잠금을 사용합니다. 게이트웨이가 여러 채팅 세션을 동시에 처리할 때 안전한 동시 접근을 보장합니다.

회사연혁

전체 데이터 흐름 다이어그램의 경우, 저장소에 docs/credential-pool-flow.excalidraw를 참조하십시오.

credential 풀은 공급자 해결책 층에 통합합니다:

  1. agent/credential_pool.py - 풀 매니저: 저장, 선택, 회전, 냉각
  2. hermes_cli/auth_commands.py — CLI 명령 및 상호 작용 마법사
  3. hermes_cli/runtime_provider.py - 풀웨어 자격 증명
  4. run_agent.py — 오류 복구: 429/402/401 → 풀 회전 → fallback

제품 정보

풀 상태는 ~/.hermes/auth.json에서 저장됩니다

{
"version": 1,
"credential_pool": {
"openrouter": [
{
"id": "abc123",
"label": "OPENROUTER_API_KEY",
"auth_type": "api_key",
"priority": 0,
"source": "env:OPENROUTER_API_KEY",
"access_token": "sk-or-v1-...",
"last_status": "ok",
"request_count": 142
}
]
},
}

전략은 config.yaml (auth.json)에 저장됩니다

credential_pool_strategies:
openrouter: round_robin
anthropic: least_used