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

# Hermes

> Run Nous Research's open terminal agent on any model in the Opper catalog

[Hermes](https://hermes-agent.nousresearch.com/) is an open-source terminal agent from Nous Research. It registers named custom providers, and discovers the available models from each one automatically.

## Setup

<Tip>
  One command, no config files:

  ```bash theme={null}
  npx @opperai/cli launch hermes
  ```

  The CLI uses an isolated `HERMES_HOME=~/.opper/hermes-home/`, so your real `~/.hermes/` is untouched.
</Tip>

To wire Opper into your existing Hermes setup, add your API key and register Opper as a named custom provider, then point the `model` block at it:

```bash theme={null}
echo 'OPPER_API_KEY=your-api-key' >> ~/.hermes/.env
```

```yaml theme={null}
# ~/.hermes/config.yaml
model:
  provider: opper
  default: anthropic/claude-opus-4-7

custom_providers:
  - name: opper
    base_url: https://api.opper.ai/v3/compat
    key_env: OPPER_API_KEY
```

## Choosing a model

Switch mid-session:

```
/model custom:opper:anthropic/claude-opus-4-7
/model custom:opper:gemini/gemini-3.5-flash
```

<Note>
  Hermes discovers the available models from Opper automatically — the model picker lists the full catalog without any per-model configuration.
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="The picker lists nothing">
    Hermes calls `GET /v3/compat/models` to populate it. An empty list usually means your [model-access rules](/control-plane/rules/model-access) have narrowed the catalog to nothing for this key.
  </Accordion>

  <Accordion title="401 Unauthorized">
    `key_env` names the variable Hermes reads, so `OPPER_API_KEY` has to exist in `~/.hermes/.env` or in the environment.
  </Accordion>
</AccordionGroup>

## Related

<CardGroup cols={2}>
  <Card title="Opper CLI" icon="terminal" href="/developer-tools/cli">
    Every agent the CLI can launch.
  </Card>

  <Card title="All integrations" icon="plug" href="/integrations/overview">
    Every app that runs on Opper.
  </Card>
</CardGroup>
