selan.ai Gateway Reactor Browser
Apps

Docs · Hermes Agent

Run Hermes Agent on your company's accounts

Hermes Agent is Nous Research's terminal agent. Here it gets your company's models, connectors and skills. It is one of the Selan apps.

Get started

How do I run Hermes with selan?

selan app hermes chat

The first time, selan app prints the commit and the scripts and asks [y/N]: only y or yes approves, and Enter refuses. It installs Hermes, then starts it. Everything after hermes goes to Hermes, so a single question without the screen is:

selan app hermes chat -m gpt-6.1-sol -q "hello"

You need curl and git. The installer fetches uv and Python itself if you have none. It runs on macOS and Linux; on Windows use WSL.

How do I run Hermes without selan?

You need an API token, which an owner mints in control under Settings → API tokens. Read the script, then:

export SELAN_TOKEN=selanct_...
curl -fsSL https://raw.githubusercontent.com/selan-ai/selan-apps/main/hermes/install.sh | bash
~/.selan/apps/hermes/run.sh chat

Run the copy of run.sh that the installer leaves, rather than piping it, so Hermes has a terminal.

How do I run Hermes on a server?

Add the selan-apps plugin to Claude Code and ask for a deploy. deploy-google-cloud makes a Compute Engine VM in your project. deploy-hostinger uses a Hostinger VPS you already have, and it has not been tested against a real VPS.

On a server, Hermes runs as its chat gateway under systemd. A server has no session, so an owner creates an API token under Settings → API tokens and you paste it into a line that hides it. Claude never sees it. The skill keeps it in Secret Manager or in a file only root can read, and revokes it when you remove the deploy.

The gateway does nothing until it has a chat platform and an allowed user. Only you can give those. Put them in ~/.selan/apps/hermes/home/.env on the server, for example TELEGRAM_BOT_TOKEN and TELEGRAM_ALLOWED_USERS, and restart the service. Do not set GATEWAY_ALLOW_ALL_USERS.

How it works

What does Hermes put on my disk?

Everything is under ~/.selan/apps/hermes.

PathWhat
hermes-agent/The Hermes release the catalog pins.
venv/, python/, uv/, cache/Its Python environment and the tools that build it.
home/Hermes's own home: config.yaml, sessions and memory.
marketplaces/Shallow clones of your company's plugin marketplaces.
xdg/What Hermes and its tools keep in ~/.local, ~/.cache and ~/.config.
run.shA copy of the launch script.

Nothing goes to your shell rc files, to ~/.local/bin or to ~/.hermes. A bare hermes still uses ~/.hermes, so always start it through run.sh or selan app.

The token is never written to disk. It reaches Hermes in its environment, as ANTHROPIC_API_KEY with ANTHROPIC_BASE_URL pointing at the gateway's Anthropic Messages endpoint. config.yaml only names it, and only connectors on selan.ai that sign in with your Selan session get it. Hermes can leave a background gateway process running with the environment of the launch that started it, so every launch stops any such process first.

Which models, connectors and skills does Hermes get?

Each launch writes config.yaml again from what your company has switched on, so a change reaches the next launch. Change Hermes's own behaviour with hermes config, not by editing that file.

  • Models. Your company's catalog, through the gateway. Pick one with -m.
  • Connectors. The connectors that sign in with your Selan session.
  • Skills. The skills in the plugin marketplaces your company switched on for the CLI.
Claude models served from a Claude subscription do not answer in Hermes. Hermes prints “Anthropic rejected this request as malformed” and “HTTP 400: Third-party apps now draw from your extra usage, not your plan limits.” Every other model answers.

What if Hermes did not work?

  • It says SELAN_TOKEN is not set. By hand, export a selanct_ token first. selan app sets it for you.
  • It says Hermes is not installed. Run install.sh first, or use selan app hermes, which does both.
  • It could not read company settings. The token is wrong, revoked or expired, or the gateway cannot be reached. Create a new one.
  • A model answers with “extra usage”. That is the Claude subscription rule above. Pick another model.
  • The server's gateway does nothing. It needs a chat platform and an allowed user in home/.env.
  • Something else. Ask us.