### [Hermes Agent](https://github.com/NousResearch/hermes-agent)

> Handle: `hermes`<br/>
> API: [http://localhost:34801/v1](http://localhost:34801/v1)

![Hermes Screenshot](./harbor-hermes.png)

Autonomous AI agent by Nous Research with persistent memory, extensible skills, multi-platform gateway (Telegram, Discord, Slack, WhatsApp), browser automation, and a sandboxed terminal. Exposes an OpenAI-compatible API server.

> **Note:** Hermes has no web UI. It is a CLI agent with an OpenAI-compatible API server. Interact with it via `harbor hermes <command>` or through the API.

#### Starting

```bash
harbor up hermes
```

On first launch, configure API keys for your preferred LLM provider:

```bash
harbor env hermes ANTHROPIC_API_KEY sk-...
# or
harbor env hermes OPENAI_API_KEY sk-...
# or
harbor env hermes OPENROUTER_API_KEY sk-...
```

#### CLI

Harbor proxies commands to the Hermes CLI:

```bash
# Interactive chat
harbor hermes chat

# Start the Hermes server
harbor hermes server

# Get or set version
harbor hermes version [version]

# Get or set API key
harbor hermes api_key [key]

# Any hermes CLI command
harbor hermes <command> [args...]
```

#### Configuration

##### Environment Variables

Following options can be set via [`harbor config`](./3.-Harbor-CLI-Reference.md#harbor-config):

```bash
# Host port for the API server
HARBOR_HERMES_HOST_PORT=34801

# Docker image
HARBOR_HERMES_IMAGE=nousresearch/hermes-agent

# Image version
HARBOR_HERMES_VERSION=latest

# Workspace directory for persistent data
HARBOR_HERMES_WORKSPACE=./hermes

# API server authentication key
HARBOR_HERMES_API_KEY=
```

##### Service-specific Environment

Additional environment variables can be set via `harbor env hermes`:

```bash
# LLM Provider API Keys
harbor env hermes ANTHROPIC_API_KEY <key>
harbor env hermes OPENAI_API_KEY <key>
harbor env hermes OPENROUTER_API_KEY <key>

# Gateway platform tokens
harbor env hermes TELEGRAM_BOT_TOKEN <token>
harbor env hermes DISCORD_BOT_TOKEN <token>
harbor env hermes SLACK_BOT_TOKEN <token>
```

##### Volumes

| Mount | Description |
|-------|-------------|
| `${HARBOR_HERMES_WORKSPACE}/data:/opt/data` | Persistent data — config, sessions, memories, skills, logs |

#### Integrations

##### llamacpp

```bash
harbor up hermes llamacpp
```

The cross-integration file sets `OPENAI_BASE_URL` to point Hermes at the llamacpp server. After starting, configure the model via:

```bash
harbor hermes chat
```

##### Ollama

```bash
harbor up hermes ollama
```

Same pattern — `OPENAI_BASE_URL` is auto-configured to the Ollama server.

##### Unsloth Studio

```bash
harbor up hermes unsloth-studio
```

Sets `OPENAI_BASE_URL` and `OPENAI_API_KEY` to point at the [Unsloth Studio](./2.3.83-Satellite-Unsloth-Studio.md) server. Hermes waits on the `unsloth-studio-bootstrap` sidecar and reads the freshly-minted API key at runtime, so the very first `harbor up unsloth-studio hermes` works end-to-end without a second pass.

##### API Server

Hermes exposes an OpenAI-compatible API server on the configured port. Other services can connect to it at `http://hermes:8642/v1`.

#### Troubleshooting

```bash
harbor logs hermes
```

If the container fails to start, ensure sufficient shared memory is allocated (the compose file sets `shm_size: 1g` for Playwright/Chromium support).

#### Links

- [Official Documentation](https://hermes-agent.nousresearch.com/)
- [GitHub Repository](https://github.com/NousResearch/hermes-agent)
- [Docker Guide](https://hermes-agent.nousresearch.com/docs/user-guide/docker/)
