Managed with AI assistance. Reviewed by a human.
🛠️ Real incident

Moving Hermes Off a Rate-Limited Free Model After Upgrading

Hermes kept hitting rate limits on a free model; how it was moved to a model that fit the upgraded plan.

Moving Hermes Off a Rate-Limited Free Model After Upgrading

Symptoms

Evidence

Gateway health was normal:

hermes gateway status
jq '{gateway_state,active_agents,platforms,updated_at}' \
  ~/.hermes/gateway_state.json
stat -c '%y %n' ~/.hermes/state/gateway.heartbeat

Recent service logs showed the actual failure:

journalctl --user -u hermes-gateway.service \
  --since '-10 minutes' --no-pager -o short-iso \
  | grep -Ei '429|rate.limit|capacity'

The configured model was:

model:
  default: stepfun/step-3.7-flash:free
  provider: nous

The provider returned HTTP 429 fair-share errors with a long retry_after period. This was explicitly a model-capacity/fair-share limit, not an invalid API key and not a Telegram connectivity problem.

Root cause

Upgrading the Nous Portal subscription did not automatically replace the configured :free model. The free model retained its independent fair-share limit even though the account had paid model access.

Recovery

Confirm Nous authentication:

hermes portal info
hermes auth status nous

Refresh the live model catalog and open the model picker:

hermes model --refresh --no-browser

Select Nous Portal, then choose the paid model name without the :free suffix:

stepfun/step-3.7-flash

If a normal restart waits for rate-limited turns to drain:

hermes gateway restart --all

--all terminates active gateway work across profiles. Use it only after confirming the active turns are abandoned or stuck and can safely be interrupted.

Verification

Confirm the saved model:

sed -n '1,5p' ~/.hermes/config.yaml

Confirm the gateway is healthy:

hermes gateway status

Run a minimal live inference request:

timeout 90 hermes \
  -z 'Reply with exactly: SUBSCRIPTION_OK' \
  --model stepfun/step-3.7-flash \
  --provider nous

The successful test returned:

SUBSCRIPTION_OK

Prevention