Adding a Hermes Model Provider

Hermes already supports custom OpenAI-compatible endpoints. Add a first-class provider only when the service needs a discoverable identity, dedicated authentication, model catalog behavior, or a native protocol path.

Official documentation: https://hermes-agent.nousresearch.com/docs/developer-guide/adding-providers

Choose the smallest path

A simple OpenAI-compatible service can often use a model-provider plugin with a profile that declares base URL, environment variables, API mode, and fallback models. OAuth, live catalogs, or nonstandard protocols may require deeper integration. A native protocol also needs an adapter and an audit of every API-mode branch in the agent loop.

The same provider identity must line up across authentication, aliases, model parsing, runtime resolution, setup, auxiliary tasks, context metadata, and documentation. Half-wired providers commonly authenticate successfully but fail in the model picker or side tasks.

Provider checklist

  • Decide whether custom configuration already solves the use case.
  • Choose one canonical provider ID and alias policy.
  • Declare exact credential precedence and endpoint scope.
  • Use chat_completions only for truly compatible endpoints.
  • Add model discovery or a maintained static fallback catalog.
  • Configure auxiliary-model defaults and context lengths.
  • Add a native adapter only when protocol differences require it.
  • Cover setup, model switching, runtime, fallback, and tool calls in tests.

Pitfalls

  • Adding auth metadata without model-parser support.
  • Sending provider-specific request fields to every endpoint.
  • Forgetting compression, vision, or other auxiliary routes.
  • Assuming a text response proves tool-call compatibility.
  • Shipping a model without accurate context-window metadata.

Verification steps

  1. Configure the provider in a disposable profile.
  2. Confirm it appears in setup and model-selection surfaces.
  3. Resolve the runtime and verify provider, API mode, and endpoint.
  4. Run a plain response and a harmless tool call.
  5. Exercise an auxiliary task.
  6. Test invalid credentials and a retryable service failure.
  7. Run provider-parity and model-switch tests.
  8. Verify the public setup and environment-variable documentation matches the implementation.