본문 바로가기
  • think together
AI

hermes ai - #2 mlx-community/Qwen3.5-9B-OptiQ-4bit 설치하기 & 텔레그램 연결

by hwamgai 2026. 6. 10.

https://gemini.google.com/share/068818dbcbe4

 

‎Gemini - 헤르메스 CLI 설정 및 메신저 연동

Gemini로 생성됨

gemini.google.com

 

 

 

클로드 cli

내 맥북(M3 Pro, 16GB)에서 mlx-community/Qwen3.5-9B-OptiQ-4bit 모델을
vllm-mlx 자원 관리를 활용해서 Hermes 로컬 모델로 등록하는 방법 알려줘. (느리면 4B 모델로 변경)

 

클로드 답변

M3 Pro 16GB에서 MLX Qwen 모델 vLLM으로 서빙하기

먼저 "Hermes 로컬 모델로 등록"이 어떤 도구를 의미하는지 확인이 필요하지만, 전반적인 설정 방법을 안내합니다.

---
1. 설치

# mlx-lm (Apple Silicon 최적화, 권장)
pip install mlx-lm

# 또는 vllm (OpenAI 호환 API 서버)
pip install vllm

---
2. 모델 다운로드

huggingface-cli download mlx-community/Qwen3.5-9B-OptiQ-4bit \
  --local-dir ~/models/qwen3.5-9b

---
3. 서버 실행

mlx-lm 방식 (Apple Silicon 최적화)
mlx_lm.server \
  --model mlx-community/Qwen3.5-9B-OptiQ-4bit \
  --port 8080

vllm 방식 (OpenAI 호환 API)
vllm serve mlx-community/Qwen3.5-9B-OptiQ-4bit \
  --max-model-len 4096 \
  --gpu-memory-utilization 0.85 \
  --port 8080

서버가 뜨면 http://localhost:8080/v1로 OpenAI 호환 엔드포인트가 생깁니다.

---
4. Hermes 채팅 템플릿

Qwen 모델은 ChatML 형식을 사용하는데, NousResearch Hermes와 동일한 포맷입니다.

<|im_start|>system
{system_prompt}<|im_end|>
<|im_start|>user
{user_message}<|im_end|>
<|im_start|>assistant

vllm 실행 시 명시적으로 지정하려면:
vllm serve ... --chat-template ./hermes_template.jinja

---
5. Claude Code에서 로컬 모델 등록 (OpenAI 호환 방식)

export ANTHROPIC_BASE_URL=http://localhost:8080/v1

또는 다른 도구 (Ollama Modelfile, LM Studio 등)에 등록할 경우 어떤 도구를 사용하는지 알려주시면 구체적인 방법을 안내드릴 수 있습니다.

---
6. 16GB 성능 고려사항

┌──────┬─────────────┬───────────────────────────┐
│ 모델 │ 4bit 가중치 │ 컨텍스트 포함 예상 사용량 │
├──────┼─────────────┼───────────────────────────┤
│ 9B   │ ~5.5GB      │ 9~12GB (타이트할 수 있음) │
├──────┼─────────────┼───────────────────────────┤
│ 4B   │ ~2.5GB      │ 5~7GB (여유로움)          │
└──────┴─────────────┴───────────────────────────┘

느리거나 메모리 압박이 있으면 4B 대안:
mlx_lm.server --model mlx-community/Qwen2.5-4B-Instruct-4bit --port 8080

---
**"Hermes 로컬 모델로 등록"**이 특정 도구(Ollama, LM Studio, Open WebUI 등)를 의미한다면 어떤 도구인지 알려주시면 해당 등록 방법을 구체적으로 안내드리겠습니다.

 

 

% hermes 하면 헤르메스가 열릴거야. 관련 폴더로 가서 접근해봐
hermes 명령어를 실행해보겠습니다.

  Ran 1 shell command

이제 Hermes가 뭔지 파악됐습니다. Hermes Agent - AI assistant with tool-calling capabilities입니다. 로컬 모델 관리 기능이 있네요. 현재 설정과 모델 목록을 확인해보겠습니다.

  Read 1 file, ran 1 shell command

이제 파악됐습니다. Hermes는 NousResearch의 AI agent CLI 도구입니다. 현재 NousResearch inference API를 사용 중이네요. 로컬 MLX 모델 서버를 연결하는 방법을 확인해보겠습니다.

  Ran 5 shell commands

Python 3.11이 있고 mlx-lm은 아직 미설치 상태입니다. 전체 설정 순서를 정리해드리겠습니다.

---
설정 순서

Step 1: mlx-lm 설치

/Users/.../.local/bin/python3.11 -m pip install mlx-lm

Step 2: 모델 다운로드 & 서버 실행

# 9B 모델 서버 실행 (자동 다운로드 포함)
/Users/.../.local/bin/python3.11 -m mlx_lm.server \
  --model mlx-community/Qwen3.5-9B-OptiQ-4bit \
  --port 8080

▎ 속도가 느리면 4B 대안:
▎ --model mlx-community/Qwen2.5-4B-Instruct-4bit

Step 3: Hermes config 수정

현재 config (~/.hermes/config.yaml)의 model 섹션을 로컬 서버로 변경:

model:
  default: mlx-community/Qwen3.5-9B-OptiQ-4bit
  provider: openai   # OpenAI 호환 엔드포인트
  base_url: http://localhost:8080/v1

또는 hermes 명령으로 직접:
hermes config set model.base_url http://localhost:8080/v1
hermes config set model.default mlx-community/Qwen3.5-9B-OptiQ-4bit

---
지금 Step 1 (mlx-lm 설치)부터 실행해드릴까요?
완료됐습니다!

요약:
- 모델 다운로드 완료 (7.12GB)
- mlx-lm 서버가 localhost:8080에서 이미 실행 중이었음
- Hermes config를 로컬 서버로 변경 완료

이제 새 터미널에서 hermes 실행하면 Qwen3.5-9B 로컬 모델로 동작합니다.

hermes

주의: mlx-lm 서버가 켜져 있는 터미널을 닫으면 서버도 종료됩니다. 다음에 다시 쓰려면:
~/mlx-env/bin/mlx_lm.server --model mlx-community/Qwen3.5-9B-OptiQ-4bit --port 8080

 

 

 

새 터미널에서 hremes 실행한 화면

 

 


 

 

이제 내 로컬 Hermes와 텔레그램/디스코드를 연동하려고 해. 내 텔레그램 봇 토큰은 [여기에 복사한 토큰 붙여넣기] 이고, 디스코드 채널 웹훅 URL은 [여기에 복사한 웹훅 URL 붙여넣기] 야.
이 정보들을 바탕으로 Hermes가 텔레그램으로부터 메시지(명령)를 수신해서 로컬 Qwen 모델로 처리한 뒤, 다시 텔레그램으로 답장을 보내거나 디스코드 채널로 메시지를 쏠 수 있도록 연동 스크립트를 짜거나 설정을 적용해 줘. 필요한 라이브러리가 있다면 설치도 진행해 주라.

 

토큰과 웹훅 URL이 실제 값이 아니라 플레이스홀더 텍스트 그대로 남아있습니다.

- 텔레그램 봇 토큰: [여기에 복사한 토큰 붙여넣기]
- 디스코드 웹훅 URL: [여기에 복사한 웹훅 URL 붙여넣기]

실제 값을 채워주시면 설정 진행하겠습니다.

그리고 보안상 채팅에 직접 붙여넣기보다, 제가 설정 완료 후 터미널에서 직접 입력하시는 방법도 있습니다. 어떻게 하시겠어요?

 

터미널에서 직접 입력

~ % hermes gateway setup

 

좋습니다. 상태 먼저 확인해보겠습니다.

  Read 1 file, ran 1 shell command

모든 게 정상입니다.

현재 상태:
- 게이트웨이 실행 중 (PID ...)
- 텔레그램 연결 완료 (polling 모드)
- 맥북 로그인 시 자동 시작 설정됨

바로 테스트해보세요:

텔레그램에서 본인 봇에게 아무 메시지나 보내면 Hermes가 로컬 Qwen 모델로 답장을 보냅니다.

한 가지 확인할 게 있는데 — 현재 Hermes config가 로컬 모델(localhost:8080)로 바뀌어 있으니, mlx-lm 서버가 켜져 있어야 봇이 응답할 수 있습니다. 서버 꺼져 있으면 응답 없거나 에러가 납니다.

mlx-lm 서버도 부팅 시 자동 시작되도록 설정할까요?

 

 

봇을 찾아서 메세지를 입력해봤는데 에러가 떠 : providerauthentication failed. check the configured credentials; raw provider details are in the gateway logs.

 

 

로컬 서버 상태와 게이트웨이 로그를 확인해보겠습니다.

  Read 1 file, ran 1 shell command

원인 파악됐습니다. provider: openai가 Hermes에서 인식 안 되는 값이네요. 올바른 provider 이름을 확인하겠습니다.

  Read 1 file, ran 1 shell command

원인 명확합니다. provider: openai가 Hermes에서 인식 안 되는 값입니다. Hermes는 ollama provider로 로컬 OpenAI 호환 서버를 지원합니다. 수정하겠습니다.

⏺ Update(.hermes/config.yaml)
Added 1 line, removed 1 line
model:
  default: mlx-community/Qwen3.5-9B-OptiQ-4bit
  provider: openai
  provider: ollama
  base_url: http://localhost:8080/v1
providers: {}
fallback_providers: []

  Searched for 1 pattern

⏺ Update(.hermes/.env)
File must be read first

  Searched for 1 pattern, read 1 file

⏺ Update(.hermes/.env)
Added 2 lines, removed 2 lines
# =======================================================
======================
# Cloud-hosted open models via Ollama's OpenAI-compatible
 endpoint.
# Get your key at: https://ollama.com/settings
# OLLAMA_API_KEY=your_ollama_key_here
OLLAMA_API_KEY=ollama
# Optional base URL override (default: https://ollama.com
/v1)
# OLLAMA_BASE_URL=https://ollama.com/v1
OLLAMA_BASE_URL=http://localhost:8080/v1

# =======================================================
======================
# LLM PROVIDER (z.ai / GLM)

이제 게이트웨이를 재시작해서 적용합니다.

  Ran 2 shell commands

텔레그램 연결 정상입니다. 이제 봇에게 메시지 보내보세요. mlx-lm 서버가 켜져 있는 상태라면 로컬 Qwen 모델이 답장할 겁니다.

 

 

 

 

텔레그램에서 봇이 문자를 작성하는 동안 터미널에서 아래와 같이 작동함

127.0.0.1 - - [09/Jun/2026 23:48:57] "GET /v1/models HTTP/1.1" 200 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /api/v1/models HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /api/tags HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /v1/props HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /props HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /version HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /v1/models HTTP/1.1" 200 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "POST /api/show HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /api/v1/models HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /api/tags HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /v1/props HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /props HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /version HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /v1/models/mlx-community/Qwen3.5-9B-OptiQ-4bit HTTP/1.1" 200 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /v1/models HTTP/1.1" 200 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /api/v1/models HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /api/tags HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /v1/props HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /props HTTP/1.1" 404 -
127.0.0.1 - - [10/Jun/2026 00:17:25] "GET /version HTTP/1.1" 404 -
2026-06-10 00:17:26,446 - INFO - Prompt Cache: 0 sequences, 0.00 GB
2026-06-10 00:17:26,446 - INFO - - assistant: 0 sequences, 0.00 GB
2026-06-10 00:17:26,446 - INFO - - user: 0 sequences, 0.00 GB
2026-06-10 00:17:26,446 - INFO - - system: 0 sequences, 0.00 GB
127.0.0.1 - - [10/Jun/2026 00:17:26] "POST /v1/chat/completions HTTP/1.1" 200 -
2026-06-10 00:17:37,382 - INFO - Prompt processing progress: 2048/18164
2026-06-10 00:17:44,943 - INFO - Prompt processing progress: 4096/18164
2026-06-10 00:17:52,665 - INFO - Prompt processing progress: 6144/18164
2026-06-10 00:18:00,534 - INFO - Prompt processing progress: 8192/18164
2026-06-10 00:18:08,533 - INFO - Prompt processing progress: 10240/18164
2026-06-10 00:18:16,685 - INFO - Prompt processing progress: 12288/18164
2026-06-10 00:18:24,983 - INFO - Prompt processing progress: 14336/18164
2026-06-10 00:18:33,606 - INFO - Prompt processing progress: 16384/18164
2026-06-10 00:18:41,178 - INFO - Prompt processing progress: 18151/18164
2026-06-10 00:18:41,520 - INFO - Prompt processing progress: 18162/18164
2026-06-10 00:18:41,669 - INFO - Prompt processing progress: 18163/18164
2026-06-10 00:18:41,857 - INFO - Prompt processing progress: 18164/18164
2026-06-10 00:18:48,846 - INFO - Prompt Cache: 4 sequences, 2.59 GB
2026-06-10 00:18:48,846 - INFO - - assistant: 2 sequences, 1.30 GB
2026-06-10 00:18:48,846 - INFO - - user: 1 sequences, 0.65 GB
2026-06-10 00:18:48,846 - INFO - - system: 1 sequences, 0.65 GB
127.0.0.1 - - [10/Jun/2026 00:18:48] "POST /v1/chat/completions HTTP/1.1" 200 -
2026-06-10 00:18:52,858 - INFO - Prompt processing progress: 827/828
2026-06-10 00:18:52,925 - INFO - Prompt processing progress: 828/828
2026-06-10 00:19:06,469 - INFO - Prompt Cache: 6 sequences, 3.95 GB
2026-06-10 00:19:06,469 - INFO - - assistant: 4 sequences, 2.65 GB
2026-06-10 00:19:06,469 - INFO - - user: 1 sequences, 0.65 GB
2026-06-10 00:19:06,469 - INFO - - system: 1 sequences, 0.65 GB
127.0.0.1 - - [10/Jun/2026 00:19:06] "POST /v1/chat/completions HTTP/1.1" 200 -
2026-06-10 00:19:07,113 - INFO - Prompt processing progress: 61/293
2026-06-10 00:19:08,034 - INFO - Prompt processing progress: 291/293
2026-06-10 00:19:08,103 - INFO - Prompt processing progress: 292/293
2026-06-10 00:19:08,335 - INFO - Prompt processing progress: 293/293

 

 

오류 정리

Hermes 로컬 모델 연동 오류 분석

문제

텔레그램 봇으로 메시지를 보냈을 때 아래 에러가 발생했다.

provider authentication failed. check the configured credentials

게이트웨이 로그의 실제 원인:

WARNING: Primary provider auth failed: Unknown provider 'openai'.

---
원인

~/.hermes/config.yaml에 로컬 모델 서버를 등록할 때 provider 값을 openai로 설정했다.

# 잘못된 설정
model:
  default: mlx-community/Qwen3.5-9B-OptiQ-4bit
  provider: openai                        # ← Hermes가 인식 못하는 provider 이름
  base_url: http://localhost:8080/v1

Hermes는 자체적으로 지원하는 provider 목록(nous, ollama, openrouter, novita 등)이 정해져 있고, openai는 그 목록에 없다. 따라서 인증 시도 자체가 실패했다.

---
해결

로컬 OpenAI 호환 서버(mlx-lm)에 가장 적합한 provider인 ollama로 변경했다.

~/.hermes/config.yaml 수정:

# 수정 후
model:
  default: mlx-community/Qwen3.5-9B-OptiQ-4bit
  provider: ollama                        # ← Hermes가 인식하는 로컬 provider
  base_url: http://localhost:8080/v1

~/.hermes/.env 추가:

OLLAMA_API_KEY=ollama                     # mlx-lm은 인증 불필요, 더미 키
OLLAMA_BASE_URL=http://localhost:8080/v1  # 로컬 서버 주소로 override

이후 hermes gateway restart로 재시작해 적용 완료.

---
핵심 교훈

┌───────────────────┬───────────────────────────────────────────────┐
│       항목        │                     내용                      │
├───────────────────┼───────────────────────────────────────────────┤
│ 잘못된 가정       │ openai가 OpenAI 호환 provider의 범용 이름일   │
│                   │ 것                                            │
├───────────────────┼───────────────────────────────────────────────┤
│ 실제 동작         │ Hermes는 자체 provider 목록만 허용            │
├───────────────────┼───────────────────────────────────────────────┤
│ 로컬 서버 연결    │ provider: ollama + OLLAMA_BASE_URL override   │
│ 방법              │ 사용                                          │
└───────────────────┴───────────────────────────────────────────────┘

 

 

문제점 :

저 터미널 창을 mlx-lm 서버 프로세스 (또는 그냥 서버 터미널)라고 부릅니다.

그리고 로그를 보면 봇이 이미 정상 작동 중입니다.

POST /v1/chat/completions HTTP/1.1" 200   ← 모델이 응답 성공
Prompt Cache: 6 sequences, 3.95 GB       ← 메모리 3.95GB 사용 중

---
정리


┌────────────────────────┬──────────────────────────────────────────┐
│          항목          │                   내용                   │
├────────────────────────┼──────────────────────────────────────────┤
│ 저 터미널 창           │ mlx-lm 서버 (로컬 AI 모델 서버)          │
├────────────────────────┼──────────────────────────────────────────┤
│ 켜져 있어야 하
└────────────────────────┴──────────────────────────────────────────┘

---
문제점: 맥북 재시작하면 서버가 꺼짐

Hermes 게이트웨이는 자동 시작되도록 설정했지만, mlx-lm 서버는 수동으로 매번 켜야 합니다.
오늘 작업한 내용 정리하면:

1. mlx-lm 설치 (~/mlx-env)
2. Qwen3.5-9B 모델 다운로드 (7.12GB)
3. Hermes에 로컬 모델 연결 (provider: ollama + localhost:8080)
4. 텔레그램 봇 연동 (게이트웨이 자동 시작 설정까지)

나중에 다시 써보고 싶을 때 mlx-lm 서버만 켜주면 됩니다:
~/mlx-env/bin/mlx_lm.server --model mlx-community/Qwen3.5-9B-OptiQ-4bit --port 8080