---
title: "Hermes Agent with EU-hosted models · Setup guide"
description: "Run Nous Research's Hermes Agent on open-weight models processed in EU data centres by setting a custom OpenAI-compatible endpoint in config.yaml."
canonical: "https://inference.eu/integrations/hermes-agent/"
language: "en"
---

Agents · Hermes Agent

# Use Hermes Agent with open-source models hosted in the EU

Hermes Agent from Nous Research is an open-source agent that works from the terminal, editors and messaging apps, with memory and skills it builds over time. It runs on any OpenAI-compatible endpoint, so you can point it at inference.eu and keep its work on open-weight models in European data centres.

[Contact sales](https://inference.eu/contact/)[Setup](#setup)

1.  01API format: OpenAI
2.  02EU data centres
3.  03Covered by one DPA

## Set it up in a few minutes

1.  1

    Create an API key in your inference.eu account and add `INFERENCE_EU_API_KEY=<your key>` to `~/.hermes/.env`.

2.  2

    Run `hermes model` and choose Custom endpoint, or edit `~/.hermes/config.yaml` directly.

3.  3

    Set `provider` to `custom`, `base_url` to the inference.eu base URL and `key_env` to `INFERENCE_EU_API_KEY`.

4.  4

    Set `default` to the model id you want, for example `kimi-k3`.

5.  5

    Start `hermes` and give it a small task to confirm that replies and tool calls work.

~/.hermes/config.yaml

```
model:
  provider: custom
  default: kimi-k3
  base_url: https://api.inference.eu/v1
  key_env: INFERENCE_EU_API_KEY
```

## What Hermes Agent is

Hermes Agent is an open-source AI agent from Nous Research. It runs in the terminal, connects to editors and to messaging platforms, schedules jobs, and keeps memory and skills that improve as it works with you. Auxiliary tasks such as context compression, vision and session titles can each use their own model.

Hermes is built to be provider-independent. Beyond its built-in providers, it works with any endpoint that implements `/v1/chat/completions`, which makes it straightforward to run on open-weight models at inference.eu.

## How the configuration works

The model settings live in `~/.hermes/config.yaml` under `model`. With `provider: custom`, Hermes sends requests to `base_url`, here the inference.eu base URL ending in `/v1`. `key_env` names the environment variable that holds your key; Hermes reads it from your shell or from `~/.hermes/.env`. `default` is the model id used for new sessions.

The interactive `hermes model` command writes the same settings when you pick Custom endpoint. Hermes scopes each key to its own base URL, so your inference.eu key is only ever sent to inference.eu. Auxiliary tasks can be pointed at inference.eu too, with their own `base_url` and model in the `auxiliary` section.

## Which models to choose

Hermes plans, calls tools and keeps long-running memory, so it benefits from models that are strong at agentic work. `kimi-k3` and `glm-5.3` are good defaults for the main model: they reason well over multi-step tasks and return clean tool calls. For agent sessions that mostly write or review code, `qwen3-coder-480b-a35b-instruct` is a strong option.

For auxiliary tasks such as compression and titles, a fast model like `gpt-oss-120b` keeps costs and latency low. Setting those tasks to inference.eu as well means no part of a session falls back to another provider.

## Troubleshooting

A 401 error means the key did not reach Hermes. Check that `INFERENCE_EU_API_KEY` is set in `~/.hermes/.env` or in the shell, and that `key_env` names exactly that variable. A 404 usually comes from a `base_url` with an extra path; it should end in `/v1`.

Note that `OPENAI_BASE_URL` only affects the `openai-api` provider, not a custom endpoint, so set the URL in config.yaml. "Model not found" means `default` differs from the inference.eu id. If auxiliary tasks fail while the main model works, they are still pointed at another provider; give them a `base_url` and model on inference.eu.

## Keeping code and data in the EU

With inference.eu as the custom endpoint, the prompts, files, memory excerpts and tool output Hermes sends for each turn are processed in EU data centres and never used for training. We sign a data processing agreement under Article 28 GDPR, share our subprocessor list and bill in euros.

Hermes can also connect to messaging platforms and outside tools, which are separate services with their own data handling. Point the main model and every auxiliary task at inference.eu, and review which gateways and tools you enable, so that model traffic stays with an EU processor.

## Hermes Agent

Category

Agents

Maker

Nous Research

API format

OpenAI

Processing

EU data centres

Website

[hermes-agent.nousresearch.com](https://hermes-agent.nousresearch.com/)

Documentation

[hermes-agent.nousresearch.com](https://hermes-agent.nousresearch.com/docs/integrations/providers)

## Hermes Agent: common questions

The questions buyers, developers and legal teams ask us most. Something missing? Ask us directly.

Yes. Hermes works with any endpoint that implements \`/v1/chat/completions\`. Run \`hermes model\` and choose Custom endpoint, or set \`provider: custom\`, \`base\_url\` and \`key\_env\` under \`model\` in \`~/.hermes/config.yaml\`, then restart Hermes.

Kimi K3 and GLM-5.3 are strong defaults for the main model because they handle multi-step planning and tool calls well. Qwen3 Coder 480B suits code-heavy sessions, and gpt-oss-120b is a quick choice for auxiliary tasks.

Hermes honours \`OPENAI\_BASE\_URL\` only for its \`openai-api\` provider. For a custom endpoint, the URL must be set as \`model.base\_url\` in config.yaml or through \`hermes model\`. That keeps keys and endpoints clearly paired.

Add \`INFERENCE\_EU\_API\_KEY=...\` to \`~/.hermes/.env\` and reference it with \`key\_env: INFERENCE\_EU\_API\_KEY\` in config.yaml. You can also write \`api\_key\` directly in config.yaml, but keeping it in the env file avoids committing secrets.

No. Hermes scopes each provider's key to its own base URL, so the key named in \`key\_env\` for your custom endpoint is only sent to inference.eu. Keys for other providers are likewise only sent to their own hosts.

Yes. In the \`auxiliary\` section of config.yaml, give tasks such as compression, vision or title generation a \`base\_url\` and model on inference.eu. Otherwise they may use a different provider than your main model.

The key is missing, wrong or in a different variable from the one \`key\_env\` names. Check \`~/.hermes/.env\`, restart Hermes after changes, and make sure the key is active in your inference.eu account.

Yes. The model provider is independent of where you talk to Hermes. Whether you use the terminal, an editor or a messaging gateway, model requests go to the endpoint in config.yaml. The messaging platform itself handles your messages under its own terms.

Yes. Use \`hermes model\` or Hermes's model switching commands to change the model, and keep the same custom endpoint. Any model id served by inference.eu can be used, so you can compare models on the same task.

Model requests are processed in EU data centres, never used for training, and covered by an Article 28 GDPR data processing agreement with a published subprocessor list. Review the messaging gateways and tools you connect, since each one processes data under its own terms.

[Ask a question](https://inference.eu/contact/)

## Related

[All integrations](https://inference.eu/integrations/)

-   [OpenClawRun the OpenClaw personal assistant on open-weight models processed in EU data centres by adding inference.eu as a custom provider in openclaw.json.Agents](https://inference.eu/integrations/openclaw/)
-   [gooseAdd inference.eu as a custom OpenAI-compatible provider in the goose desktop app or CLI and run its agents on open-weight models processed in the EU.Agents](https://inference.eu/integrations/goose/)
-   [PiAdd inference.eu to Pi's models.json and run the minimal Pi coding agent on open-weight models processed in EU data centres.Coding agents](https://inference.eu/integrations/pi/)

## Move your AI workloads to EU infrastructure

Tell us which models you use and roughly how much traffic you have. We reply within one working day with pricing and next steps.

-   Reply within one working day
-   Pricing for your volume
-   DPA ready to sign
