> ## Documentation Index
> Fetch the complete documentation index at: https://www.edenai.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Hermes Agent

> Connect Hermes Agent to Eden AI and run the self-hosted, persistent agent on 500+ models with automatic fallbacks and a single API key.

export const TechArticleSchema = ({title, description, path, articleSection, about, proficiencyLevel = "Beginner", dependencies, keywords = [], datePublished, dateModified, image, inLanguage = "en"}) => {
  const baseUrl = "https://www.edenai.co/docs";
  const canonicalUrl = `${baseUrl}/${path}`.replace(/\/+$/, "");
  const ogParams = new URLSearchParams({
    division: articleSection || "",
    title: title || "",
    description: description || ""
  });
  const resolvedImage = image || `https://edenai.mintlify.app/_mintlify/api/og?${ogParams.toString()}`;
  const data = {
    "@context": "https://schema.org",
    "@type": "TechArticle",
    "@id": `${canonicalUrl}#techarticle`,
    mainEntityOfPage: {
      "@type": "WebPage",
      "@id": canonicalUrl
    },
    headline: title,
    name: title,
    description: description,
    url: canonicalUrl,
    inLanguage: inLanguage,
    isPartOf: {
      "@type": "WebSite",
      name: "Eden AI Documentation",
      url: baseUrl
    },
    author: [{
      "@type": "Organization",
      name: "Eden AI",
      url: "https://www.edenai.co/"
    }],
    publisher: {
      "@type": "Organization",
      name: "Eden AI",
      url: "https://www.edenai.co/",
      logo: {
        "@type": "ImageObject",
        url: "https://www.edenai.co/assets/logo.png"
      }
    }
  };
  if (articleSection) data.articleSection = articleSection;
  if (about) data.about = {
    "@type": "Thing",
    name: about
  };
  if (proficiencyLevel) data.proficiencyLevel = proficiencyLevel;
  if (dependencies) data.dependencies = dependencies;
  if (keywords && keywords.length) data.keywords = keywords;
  if (datePublished) data.datePublished = datePublished;
  if (dateModified) data.dateModified = dateModified;
  data.image = Array.isArray(resolvedImage) ? resolvedImage : [resolvedImage];
  const json = JSON.stringify(data);
  const schemaId = `techarticle-${canonicalUrl}`;
  React.useEffect(() => {
    if (typeof document === "undefined") return;
    document.querySelectorAll(`script[data-schema-id="${schemaId}"]`).forEach(n => n.remove());
    const script = document.createElement("script");
    script.type = "application/ld+json";
    script.dataset.schemaId = schemaId;
    script.textContent = json;
    document.head.appendChild(script);
    return () => script.remove();
  }, [json, schemaId]);
  return null;
};

<TechArticleSchema title={"Hermes Agent"} description={"Connect Hermes Agent to Eden AI and run the self-hosted, persistent agent on 500+ models with automatic fallbacks and a single API key."} path="v3/integrations/hermes" articleSection="Autonomous Agents" about={"Autonomous AI Agents"} proficiencyLevel="Intermediate" keywords={["Eden AI", "AI API", "Hermes Agent", "Nous Research"]} datePublished="2026-06-19T00:00:00Z" dateModified="2026-06-19T00:00:00Z" />

Connect [Hermes Agent](https://hermes-agent.nousresearch.com) to Eden AI and run the self-hosted, persistent agent on 500+ models with automatic fallbacks and a single API key.

## Overview

Hermes Agent is an open-source, self-hosted AI agent from Nous Research. It runs as a persistent background process with its own memory and evolving skills, and reaches you across the CLI and 20+ messaging platforms. Because Hermes talks to any OpenAI-compatible endpoint, you can point it at Eden AI and get:

* **500+ models**: Access OpenAI, Anthropic, Google, and more through a single API key
* **One key, many providers**: Switch models by changing a single config value — no per-provider keys
* **Automatic fallbacks**: Configure a backup model that Hermes tries when the primary one fails

<Note>
  Hermes is an **agent**, so every request it sends includes a `tools` (function-calling) parameter. Point it at a model that supports function calling — see [Choosing a model](#choosing-a-model).
</Note>

## Prerequisites

* Hermes Agent already installed. If not, run the one-line installer:

<CodeGroup>
  ```bash macOS / Linux / WSL2 theme={null}
  curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
  ```

  ```powershell Windows theme={null}
  iex (irm https://hermes-agent.nousresearch.com/install.ps1)
  ```
</CodeGroup>

* Eden AI API key from [app.edenai.run](https://app.edenai.run) → **API Keys**

## Setup

### 1. Point Hermes at Eden AI

Configure the `custom` provider with the Eden AI base URL and a function-calling model. Use the built-in `config set` commands — no manual file editing required:

```bash theme={null}
hermes config set model.provider custom
hermes config set model.base_url https://api.edenai.run/v3
hermes config set model.default anthropic/claude-sonnet-4-5
```

This writes to Hermes' config file (`hermes config path` prints its location — `~/.hermes/config.yaml` on macOS/Linux, `%LOCALAPPDATA%\hermes\config.yaml` on Windows). The result looks like:

<CodeGroup>
  ```yaml config.yaml theme={null}
  model:
    provider: custom
    base_url: https://api.edenai.run/v3
    default: anthropic/claude-sonnet-4-5
  ```
</CodeGroup>

### 2. Add your API key

Hermes derives the key's environment-variable name from the base URL host, so `api.edenai.run` maps to **`EDENAI_API_KEY`**. Add it to Hermes' secrets file (`hermes config env-path` prints its location):

<CodeGroup>
  ```bash .env theme={null}
  EDENAI_API_KEY=YOUR_EDEN_AI_API_KEY
  ```
</CodeGroup>

<Note>
  * **`base_url`** must be `https://api.edenai.run/v3` (no trailing `/chat/completions` — the OpenAI-compatible client appends that for you).
  * Keep the key in the `.env` file, not in `config.yaml`. Any environment variable named `EDENAI_API_KEY` works too.
  * Billing is handled on the Eden AI side through your API key. Check per-request cost in the [Eden AI dashboard](https://app.edenai.run).
</Note>

### 3. Start Hermes

```bash theme={null}
hermes chat
```

For a one-shot, non-interactive run (handy for scripts or a quick smoke test):

```bash theme={null}
hermes chat -Q -q "Reply with exactly one word: pong"
```

Every LLM call now flows through Eden AI, with unified billing and per-request cost visibility.

## Choosing a model

Hermes requires **function calling**, so pick a model that supports it. Any `provider/model` string from the Eden AI catalog works — set it with `hermes config set model.default <model>` or per-session with `hermes chat -m <model>`.

| Model                         | Best for                                                            |
| ----------------------------- | ------------------------------------------------------------------- |
| `anthropic/claude-sonnet-4-5` | **Recommended default** — balanced reasoning, reliable tool calling |
| `anthropic/claude-opus-4-8`   | Maximum capability                                                  |
| `anthropic/claude-haiku-4-5`  | Fast and cheap                                                      |
| `openai/gpt-5`                | OpenAI's frontier model                                             |
| `google/gemini-2.5-pro`       | Long context, multimodal                                            |

Browse the full catalog at [app.edenai.run/models](https://app.edenai.run/models).

## Set up a fallback

Hermes can fall back to a backup model when the primary one fails. Add a second Eden AI model to the fallback chain:

```bash theme={null}
hermes fallback add
```

## Troubleshooting

### `401` / `Custom token not found`

Verify your Eden AI key — grab a fresh one at [app.edenai.run](https://app.edenai.run) → **API Keys**. Confirm `EDENAI_API_KEY` is set in Hermes' `.env` (`hermes config env-path`) and has no leading/trailing spaces.

### `Request included tools parameter, but providers ... do not support function calling`

The selected model can't do function calling, which Hermes requires. Switch to a function-calling model:

```bash theme={null}
hermes config set model.default anthropic/claude-sonnet-4-5
```

### `model not found`

Ensure `model.default` uses the `provider/model` format (e.g. `anthropic/claude-sonnet-4-5`). No bare model names.

### Connection issues

Confirm `base_url` is exactly `https://api.edenai.run/v3` and check Eden AI status at [app-edenai.instatus.com](https://app-edenai.instatus.com).

## Next Steps

* [OpenClaw](./openclaw) - Self-hosted terminal-based AI agent
* [OpenCode](./opencode) - Terminal-based AI coding assistant
* [Claude Code](./claude-code) - Official Claude CLI
