구독 프록시
구독 프록시는 외부 앱이 사용할 수 있도록 하는 로컬 HTTP 서버입니다 — OpenViking, Karakeep, Open WebUI, OpenAI 호환 앱 모두 Chat Completions — Hermes에서 관리하는 제공자 구독을 LLM 엔드포인트로 사용하세요. 프록시는 올바른 자격 증명을 첨부합니다(자동으로 새로 고침) 그래서 앱은 고정 API 키가 필요하지 않습니다.
이는 API 서버와 다릅니다:
| API 서버 | 구독 프록시 | |
|---|---|---|
| 그것이 제공하는 것 | 사용자의 에이전트(전체 도구 세트, 메모리, 기술) | 원시 모델 추론 |
| 사용 사례 | "Hermes를 채팅 백엔드로 사용하세요" | 다른 앱에서 내 포털 구독 사용 |
| 인증 | 당신의 API_SERVER_KEY | 어떤 보유자(에이전트이 실제 소유자를 첨부함) |
| 도구 호출 | 예 — 에이전트가 도구를 실행합니다 | 아니요 — 그냥 통과만 |
API 서버를 에이전트를 백엔드로 사용하고 싶을 때 사용하세요. 사용하세요 구독을 통해 모델만 사용하고 싶을 때 프록시.
빠른 시작
1. 제공자 계정에 로그인하세요 (한 번만)
hermes login nous
이것은 Nous 포털 OAuth 절차를 위해 브라우저를 엽니다. Hermes는 저장합니다
~/.hermes/auth.json에 있는 리프레시 토큰 — 모든 Hermes가 있는 동일한 장소
제공자 로그인이 활성화되었습니다.
2. 프록시 시작
hermes proxy start
Starting Hermes proxy for Nous Portal Listening on: http://127.0.0.1:8645/v1 Forwarding to: (resolved per-request from your subscription) Use any bearer token in the client — the proxy attaches your real credential.
이것을 포그라운드에서 계속 실행하세요. `tmux`, `nohup` 또는 systemd를 사용하세요
유닛이 로그아웃 후에도 살아남길 원하면.
### 3. 앱을 그것을 가리키도록 설정하세요 \{#3-point-your-app-at-it}
모든 OpenAI 호환 앱 설정은 같은 세 가지 항목을 사용합니다:
Base URL: http://127.0.0.1:8645/v1 API key: anything (e.g. "sk-unused") Model: Hermes-4- # or Hermes-4.3-, Hermes-4-
프록시는 앱에서 오는 `Authorization` 헤더를 무시하고 첨부합니다
업스트림 요청에 대한 실제 포털 자격 증명입니다. 새로 고침이 발생합니다
소지자가 만료에 가까워지면 자동으로.
## 사용 가능한 제공자 \{#available-providers}
```bash
hermes proxy providers
현재 배송됨: nous (Nous Portal). 더 많은 OAuth 제공자를
UpstreamAdapter 인터페이스를 구현하여 추가됨
hermes_cli/proxy/adapters/.
상태 확인
hermes proxy status
Hermes proxy upstream adapters
[nous ] Nous Portal — ready (bearer expires 2026-05-15T06:43:)
만약 `not logged in`를 보게 되면, `hermes login nous`를 실행하세요. 만약 보게 되면
`credentials need attention`, 사용자의 리프레시 토큰이 취소되었습니다 (드물게 —
포털 웹 UI에서 로그아웃한 경우에 발생할 수 있음) — 그냥 다시 실행하세요
`hermes login nous`.
## 허용된 경로 \{#3-point-your-app-at-it}
프록시는 업스트림이 실제로 제공하는 경로만 전달합니다. Nous의 경우
포털:
| 경로 | 목적 |
|------|---------|
| `/v1/chat/completions` | 채팅 완성(스트리밍 + 비스트리밍) |
| `/v1/completions` | 레거시 텍스트 완성 |
| `/v1/embeddings` | 임베딩 |
| `/v1/models` | 모델 목록 |
다른 경로(`/v1/images/generations`, `/v1/audio/speech` 등)는 반환합니다
허용된 경로를 명확하게 가리키는 오류와 함께 404가 발생합니다. 이렇게 하면 잘못된
클라이언트가 이상한 요청을 업스트림으로 유출하지 않도록.
## OpenViking을 포털 사용으로 구성하기 \{#available-providers}
[OpenViking](https://github.com/volcengine/OpenViking)는 컨텍스트입니다
VLM(비전/언어 모델)을 위해 LLM 제공자가 필요한 데이터베이스
기억을 추출하는 데 사용) 및 임베딩 모델. 프록시를 사용하면
로컬 프록시에 `vlm.api_base`를 가리키십시오:
`~/.openviking/ov.conf` 편집:
```json
{
"vlm": {
"provider": "openai",
"model": "Hermes-4-",
"api_base": "http://127.0.0.1:8645/v1",
"api_key": "unused-proxy-attaches-real-creds"
}
}
그런 다음 터미널에서 openviking-server와 함께 프록시를 시작하세요:
# Terminal 1
hermes proxy start
# Terminal 2
openviking-server
OpenViking의 VLM 통화는 이제 사용자의 포털 구독을 통해 이루어집니다. 그
임베딩 모델 쪽은 여전히 자체 제공자가 필요합니다 — 포털은 제공 역할을 합니다
/v1/embeddings 하지만 모델 선택은 당신의 등급에 따라 달라집니다
지원합니다; portal.nousresearch.com/models를 확인하세요.
카라킵(또는 어떤 북마크/요약 앱)이 설정하기
Karakeep는 OpenAI 호환 API를 사용합니다 북마크 요약. 설정에서는:
# Karakeep.env
OPENAI_API_BASE_URL=http://127.0.0.1:8645/v1
OPENAI_API_KEY=any-non-empty-string
INFERENCE_TEXT_MODEL=Hermes-4-
같은 패턴이 Open WebUI, LobeChat, NextChat 또는 다른 어떤 것에서도 작동합니다 OpenAI 호환 클라이언트.
LAN에서 노출
기본적으로 프록시는 127.0.0.1 (로컬호스트 전용)에 바인딩됩니다. 다른 사용자가 연결할 수 있도록
네트워크에 있는 기기들이 그것을 사용합니다:
hermes proxy start --host 0.0.0.0 --port 8645
⚠ 주의: 이제 네트워크에 있는 누구나 당신의 포털을 사용할 수 있습니다 구독. 프록시는 자체 인증이 없으며 — 모든 베어러를 허용합니다. 노출할 경우 적절한 인증이 있는 방화벽, VPN 또는 리버스 프록시를 사용하세요 이것은 당신이 신뢰하는 네트워크를 넘어섭니다.
요청 제한
사용자의 포털 등급의 RPM/TPM 제한은 전체 프록시에서 적용됩니다. 그 프록시는 분산되거나 풀링되지 않습니다 — 이것은 전체를 가진 단일 베어러입니다 구독 할당량. 사용량을 모니터링하세요 portal.nousresearch.com.
건축
프록시는 의도적으로 최소화되어 있습니다. 요청에 따라:
- 앱에서
POST /v1/chat/completions받기 - 어댑터의 현재 자격 증명을 확인하세요(만료 시 갱신)
- 요청 본문을 그대로 전달하되,
Authorization: Bearer <minted-key>포함 - 응답을 변경하지 않고 스트리밍 방식으로 전송합니다 (SSE 유지)
변환 없음. 요청 본문 기록 없음. 에이전트 루프 없음. 그 프록시는 자격 증명을 첨부하는 통과 장치이다.
미래: 더 많은 OAuth 제공자
어댑터 시스템은 플러그형입니다. 새로운 제공자 추가 (예:
HuggingFace, GitHub Copilot의 채팅 엔드포인트, OAuth를 통한 Anthropic)
에는 UpstreamAdapter를 구현하는 것이 필요합니다
hermes_cli/proxy/adapters/<provider>.py 그리고 그것을 등록하는 중
adapters/__init__.py. OpenAI와 호환되지 않는 제공자
프로토콜 수준(예: Anthropic Messages API)은 필요할 것입니다
변환 계층은 현재 형태의 범위를 벗어납니다.