Docs

Hermes.

Hermes is the Nous Research agent, open source and MIT licensed. It is not a coding agent like the rest of this section: it lives in your messaging channels (Telegram, Discord, Slack, WhatsApp, Signal, email) as well as in the terminal, it remembers what you talked about, it schedules tasks for itself and it delegates to subagents.

Connect it to NaN

Hermes ships a provider called custom, meant for any OpenAI-compatible endpoint. That is the one NaN uses.

Or let the CLI do it

The NaN CLI configures this for you: it finds your Hermes, fills in the three values below through hermes config set and leaves the rest of your config alone. The steps here are what it does, if you would rather do it yourself or want to know what changed.

Install it

On macOS and Linux:

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

For macOS 12 or newer and for Windows 10 and 11 there are desktop installers on their site as well.

Configure it

hermes setup

Choose the custom provider (it also shows up as local, ollama or vllm: it is the same one, the OpenAI-compatible endpoint provider) and give it the three values:

FieldValue
Base URLhttps://api.nan.builders/v1
API keyyour key, the one that starts with sk-
Modelglm5.3-flash

Unlike the providers Hermes ships preconfigured, custom has no fixed environment variable: you give it the address and the key here, and it keeps them in its config file.

That file is ~/.hermes/config.yaml on macOS and Linux. On Windows it is %LOCALAPPDATA%\hermes\config.yaml. hermes config path prints whichever one is yours, and HERMES_HOME overrides both.

Check that it works

hermes doctor

It tells you whether the provider answers. Then start the agent and send it a message through whichever channel you configured.

Switching models

The default model lives in that same file, under model.default. You do not edit it by hand:

hermes model

glm5.3-flash if you are going to give it long tasks or have it delegate to subagents, for its 1M token context. deepseek-v4-flash for conversation and normal tasks, which also has the widest quota on the cluster.

If you are going to send it photos over Telegram, any of them will do: every chat model accepts images.

Known issues
  • The custom provider does not discover models. Since there is no fixed list behind it, write the id exactly as it appears in Choose your model.
  • An agent that lives in your messages spends at its own pace. It is not a session you open and close: if you give it scheduled tasks, it spends quota while you are not looking. Check it at cloud.nan.builders.
nan.builders © 2026
Copied to clipboard