Hermes Agent — Nous Research's open-source, self-hosted personal AI agent: one gateway with persistent memory, skills, and scheduled jobs, reachable over an OpenAI-compatible API (and chat platforms). Deployed as a single host-networked Nomad service with a data volume; bring an LLM provider (OpenAI/Anthropic or a local endpoint).
Save as values.hcl, edit, then run:
# The name of the Nomad job.
job_name = "hermes"
# The Nomad namespace to deploy into.
namespace = "default"
# The datacenters to deploy to.
datacenters = ["*"]
# The Hermes Agent container image. Pin a tag in production.
image = "nousresearch/hermes-agent:latest"
# Host port for the gateway's OpenAI-compatible API and health endpoint.
port = 8642
# OpenAI API key (OPENAI_API_KEY). Set this or anthropic_api_key (or openai_base_url for a local endpoint).
openai_api_key = ""
# Anthropic API key (ANTHROPIC_API_KEY). Optional.
anthropic_api_key = ""
# Override the OpenAI-compatible base URL (OPENAI_BASE_URL) to use a local provider, e.g. the litellm pack (http://127.0.0.1:4000/v1) or ollama. Empty = OpenAI.
openai_base_url = ""
# Token that secures the API endpoint (HERMES_AUTH_TOKEN). Empty = no auth (trusted network only).
auth_token = ""
# Named volume for Hermes' persistent memory, config, and keys (/opt/data).
data_volume = "hermes_data"
# Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []
# The task resources.
resources = {
cpu = 500
memory = 512
}
| Name | Type | Default | Description |
|---|---|---|---|
| job_name | string | "hermes" | The name of the Nomad job. |
| namespace | string | "default" | The Nomad namespace to deploy into. |
| datacenters | list | ["*"] | The datacenters to deploy to. |
| image | string | "nousresearch/hermes-agent:latest" | The Hermes Agent container image. Pin a tag in production. |
| port | number | 8642 | Host port for the gateway's OpenAI-compatible API and health endpoint. |
| openai_api_key key | string | "" | OpenAI API key (OPENAI_API_KEY). Set this or anthropic_api_key (or openai_base_url for a local endpoint). |
| anthropic_api_key key | string | "" | Anthropic API key (ANTHROPIC_API_KEY). Optional. |
| openai_base_url | string | "" | Override the OpenAI-compatible base URL (OPENAI_BASE_URL) to use a local provider, e.g. the litellm pack (http://127.0.0.1:4000/v1) or ollama. Empty = OpenAI. |
| auth_token key | string | "" | Token that secures the API endpoint (HERMES_AUTH_TOKEN). Empty = no auth (trusted network only). |
| data_volume | string | "hermes_data" | Named volume for Hermes' persistent memory, config, and keys (/opt/data). |
| constraints | list | [] | Placement constraints. Pin to the node holding the volume. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true". |
| resources | object | {
cpu = 500
memory = 512
} | The task resources. |
No variables match.
Hermes Agent — Nous Research's open-source, self-hosted personal AI agent: one gateway with persistent memory, skills, and scheduled jobs, reachable over an OpenAI-compatible API (and 20+ chat platforms).
Single host-networked Nomad service with a data volume. Bring your own LLM provider.
nomad-pack registry add nomploy https://github.com/Nomploy/nomad-packs
nomad-pack run hermes --registry=nomploy
| Variable | Default | Description |
|---|---|---|
port |
8642 |
Gateway API / health port. |
openai_api_key |
"" |
OPENAI_API_KEY. |
anthropic_api_key |
"" |
ANTHROPIC_API_KEY. |
openai_base_url |
"" |
OPENAI_BASE_URL — point at a local provider (litellm/ollama). |
auth_token |
"" |
HERMES_AUTH_TOKEN securing the API. |
data_volume |
hermes_data |
/opt/data — persistent memory, config, keys. |
image |
nousresearch/hermes-agent:latest |
Image. Pin a tag in production. |
resources |
{ cpu = 500, memory = 512 } |
Task resources. |
Set at least one provider (openai_api_key / anthropic_api_key) or openai_base_url to a local
OpenAI-compatible endpoint — e.g. the litellm pack (http://127.0.0.1:4000/v1) fronting
ollama. Set auth_token and front with TLS before exposing it. Pin the job to the node
holding the volume with constraints.