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 | bashFor macOS 12 or newer and for Windows 10 and 11 there are desktop installers on their site as well.
Configure it
hermes setupChoose 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:
| Field | Value |
|---|---|
| Base URL | https://api.nan.builders/v1 |
| API key | your key, the one that starts with sk- |
| Model | glm5.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 doctorIt 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
Recommended 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
customprovider 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.