12 days ago
I have set-up a Hermes project and my Bot is running on Discord.
No matter which LLM Model and provider I set-up, the Bot will always reply:
Non-retryable error (HTTP 400) — trying fallback...
Non-retryable error (HTTP 400): HTTP 400: No models provided
I tried OpenRouter with Claude Sonnet, Claude Opus, GPT 5.5 and Deepseek but it wont work. Here is an example:
Attachments
2 Replies
Status changed to Open Railway • 12 days ago
12 days ago
Hello b2bwp,
first check if your config.yaml has a utf-8 bom encoding issue (common when edited manually), re-save it as utf-8 without bom and restart
second , your openrouter api key might not have credits or the model id might be slightly wrong , try a free model like google/gemma-3-1b-it:free from openrouter.ai/models to confirm your key actually works, then go from there
Hope this help you :)
12 days ago
I would treat this as Hermes not actually loading a valid model config in the Discord gateway process, not as a Railway networking problem.
The Hermes dashboard/template flow is:
1. Add a provider key in the dashboard/API Keys page, e.g. OPENROUTER_API_KEY
2. Go to Models and pick a main model from an authenticated provider
3. Restart the gateway or start a new Discord session so it reads the updated config
4. Keep /root/.hermes on a Railway volume so config.yaml, sessions, and keys survive redeploys
A few concrete checks:
1. In the Hermes dashboard, open Models. Does OpenRouter appear in the left column as an authenticated provider? Hermes only lists providers that have working credentials.
2. Pick a simple known OpenRouter model, for example google/gemini-3-flash-preview or whatever model the picker shows as available, then save it as the Main model.
3. Restart the Hermes gateway / redeploy once. The docs say gateway changes apply to the next new session, and existing chats may keep the model they started with.
4. Check Railway variables for HERMES_INFERENCE_MODEL. Hermes documents this as a process-level override that takes priority over config.yaml; if it is blank, malformed, or points at a model/provider mismatch, remove it and use the dashboard model setting instead.
5. If you configured auxiliary models, reset them to auto temporarily. The Hermes docs say auxiliary tasks can fall back or warn when the provider is not authenticated; simplifying to one main model removes that variable.
For OpenRouter specifically, use the exact model ID from the Hermes picker/OpenRouter, not a display label like "Claude Sonnet" or "GPT 5.5". The config should end up with a provider of openrouter and a concrete model slug such as anthropic/claude-sonnet-4.6 or another slug shown in the picker.
If it still says No models provided after that, the next thing I would inspect is the persisted /root/.hermes/config.yaml inside the mounted volume. The model section should not be empty, and the Railway volume should be mounted before the gateway starts. Without the volume, a redeploy can make Hermes start with defaults again.