Get Started

lnk-hermes lets a Link agent run on Hermes Agent by Nous Research. It answers Link's harness adapter commands: installing Hermes, configuring it, and saying how to run it. It comes with Link: lnk agent use hermes adds it and installs Hermes the first time, in its own home, ~/Link/Agents/<agent>/Harnesses/hermes. Every other command is on Link's Agents page. How it compares with Link's other harnesses: Harnesses.

Quickstart

lnk up agents
lnk agent use hermes          # installs it, then starts it with your settings

Use a hosted model

Anthropic, OpenAI or OpenRouter, with a key.

ANTHROPIC_API_KEY=sk-ant-... lnk agent start

Use a local model

Hermes takes any local runtime lnk model list finds (Ollama, LM Studio, llama.cpp, ...), configured as a custom provider at its /v1 address. It needs the models plugin, and a 64k-token context (see Troubleshooting for Ollama).

lnk up models
lnk agent start --model qwen3

Move from OpenClaw to Hermes

use hands Hermes the same model, files folder and channels (its Telegram bot, its Slack app, its Discord bot), so it answers the same chats; WhatsApp and Signal link again from a QR code. OpenClaw's memory and conversations stay in its home: Hermes's own hermes claw migrate imports OpenClaw's memory and skills (one way; Link doesn't run it for you).

lnk agent use hermes
lnk agent status
lnk agent use openclaw        # and back

Talk to it in Slack

Hermes's Slack works through Link's proxy, without lan. Hermes's own commands (/sethome, /stop, /commands) work as messages in your DM with it: type a space before the /, since Slack takes a leading / for a slash command of the app, and Link's app has none.

How it runs

lnk agent start installs Hermes's own release, the one Link pins, with its own Python and Node, in its home, and runs its gateway there, in the sandbox. Its terminal starts in your files folder. What it installs and which ports it uses: Security.

It reports its scheduled jobs to your direct message with the agent on each channel: Link sets that as Hermes's home channel at every start, over a /sethome. A Discord bot connected before Link kept its direct message has none: send /sethome there, or connect it again.

Troubleshooting

SymptomFix
It fails or forgets with a local Ollama modelHermes needs a 64k context: OLLAMA_CONTEXT_LENGTH=64000 ollama serve.
The install fails at git clone on a MacIts installer needs git, from developer-tools, on unless you denied it: lnk agent allow developer-tools.
Something else on your Mac uses port 8642 or the ports after itStop it: main's port is fixed. Another agent's is in its own block (lnk agent list --json).

Files it keeps

FileWhat it is
<harness home>/.hermes/.lnk-tools.jsonThe MCP servers this adapter added to Hermes's settings, one per tool, so it removes only its own.
<harness home>/bin/lnk-hermesThis adapter, copied at each start: Signal's relay runs it in the sandbox.

Why it works this way: Decisions. What it may do: Security.

Work on its code

Build and test

It depends on link-plugin from link-core, checked out beside this folder.

cargo fmt --check
cargo clippy --all-targets --locked -- -D warnings
cargo test --locked
# Hermes Agent itself, installed and run by link-core's lnk-harness in its
# sandbox, on the wire (Linux, bubblewrap; a few hundred MB)
# and the conformance kit (link-core's), run against it
LNK_TEST_REAL=1 cargo test --locked --test on_the_wire -- --test-threads 1

Release

Link's release builds lnk-hermes from this folder and ships it as one of Link's plugins, at the core's version, signed with Link's key.

License

MIT or Apache-2.0, at your option.