Always set DeepSeek base_url to avoid OpenRouter 401

Leftover model.base_url pointing at openrouter.ai causes Missing
Authentication header even with a valid DEEPSEEK_API_KEY.
This commit is contained in:
domfelipe 2026-08-03 00:01:28 -03:00
parent 89b036652c
commit f86c06d521
4 changed files with 21 additions and 0 deletions

View file

@ -87,13 +87,17 @@ Ask:
hermes config set DEEPSEEK_API_KEY "THE_KEY"
hermes config set model.provider deepseek
hermes config set model.default deepseek-v4-flash
hermes config set model.base_url "https://api.deepseek.com/v1"
```
Important: always set `model.base_url` to the DeepSeek API. A leftover OpenRouter URL causes HTTP 401 ("Missing Authentication header") even with a valid `DEEPSEEK_API_KEY`.
4. Verify with:
```bash
hermes config get model.default
hermes config get model.provider
hermes config get model.base_url
```
Optional: Offer fallback model `deepseek-v4-pro` if the user wants a stronger model (higher cost).
@ -232,6 +236,7 @@ curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-
hermes config set DEEPSEEK_API_KEY "sk-..."
hermes config set model.provider deepseek
hermes config set model.default deepseek-v4-flash
hermes config set model.base_url "https://api.deepseek.com/v1"
hermes config set TELEGRAM_BOT_TOKEN "..."
hermes config set TELEGRAM_ALLOWED_USERS "123456789"

View file

@ -25,6 +25,7 @@ curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash -s -- --skip-
hermes config set DEEPSEEK_API_KEY "THE_KEY"
hermes config set model.provider deepseek
hermes config set model.default deepseek-v4-flash
hermes config set model.base_url "https://api.deepseek.com/v1"
```
3. Check:
@ -32,9 +33,16 @@ hermes config set model.default deepseek-v4-flash
```bash
hermes config get model.default
hermes config get model.provider
hermes config get model.base_url
# key lives in ~/.hermes/.env — never cat full file in front of client
```
If HTTP 401 "Missing Authentication header" with a valid key: `model.base_url` is probably still OpenRouter. Force DeepSeek:
```bash
hermes config set model.base_url "https://api.deepseek.com/v1"
```
4. Test connectivity: `curl -sI https://api.deepseek.com | head -1`
5. If the model name is rejected, stick to Hermes-supported IDs: `deepseek-v4-flash` or `deepseek-v4-pro` (legacy `deepseek-chat` / `deepseek-reasoner` were retired).

View file

@ -52,13 +52,20 @@ if [[ ! "$TG_USERS" =~ ^[0-9]+(,[0-9]+)*$ ]]; then
exit 1
fi
BASE_URL="https://api.deepseek.com/v1"
if [[ "$PROVIDER" == "openrouter" ]]; then
BASE_URL="https://openrouter.ai/api/v1"
fi
hermes config set DEEPSEEK_API_KEY "$DS_KEY"
hermes config set model.provider "$PROVIDER"
hermes config set model.default "$MODEL"
hermes config set model.base_url "$BASE_URL"
hermes config set TELEGRAM_BOT_TOKEN "$TG_TOKEN"
hermes config set TELEGRAM_ALLOWED_USERS "$TG_USERS"
echo "ok: provider=$(hermes config get model.provider 2>/dev/null || echo "$PROVIDER")"
echo "ok: model=$(hermes config get model.default 2>/dev/null || echo "$MODEL")"
echo "ok: base_url=$(hermes config get model.base_url 2>/dev/null || echo "$BASE_URL")"
echo "ok: allowed_users=$TG_USERS"
echo "ok: secrets written (not displayed)"