Hermes Agent with mittwald AI Hosting
Hermes Agent is a command-line agent with file, shell and web tools, a built-in skill library, and MCP support. It reaches mittwald AI Hosting through a custom provider entry.
Installation
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
Check the install:
hermes --version
Pointing Hermes at mittwald AI Hosting
Hermes reads ~/.hermes/config.yaml. Add a custom_providers entry and make it the
default:
model:
default: Qwen3.5-122B-A10B-FP8
provider: mittwald
base_url: https://llm.aihosting.mittwald.de/v1
custom_providers:
- name: mittwald
base_url: https://llm.aihosting.mittwald.de/v1
api_key: sk-...
models:
- Qwen3.5-122B-A10B-FP8
- Qwen3.8-27B-NVFP4
- Qwen3.6-35B-A3B-FP8
context_length: 245760
Replace sk-... with your AI Hosting API key. You create it in the AI-Hosting
section of your mStudio project — see
Gaining access. An mStudio API
token from your profile settings is a different credential and will not work here.
A custom_providers entry accepts these keys: name, base_url, api_key,
api_mode, model, models, context_length, rate_limit_delay, extra_body,
ssl_ca_cert, ssl_verify and key_env. An unrecognised key isn't reliably caught
before you reach a chat session — see
Checking the config and the endpoint separately — so check
spelling against this list if the provider misbehaves.
Instead of pasting the key into config.yaml as api_key, you can keep it out of
the file entirely with key_env and read it from an environment variable:
key_env: MITTWALD_LLM_API_KEY
Verifying the connection
Run hermes doctor as a first check:
hermes doctor
doctor surfaces common environment and setup problems, but its output varies by
installation, and it does not reliably validate custom_providers field names — an
unrecognised key may simply be ignored rather than reported. If the provider doesn't
behave as expected, check spelling against the key list in
Pointing Hermes at mittwald AI Hosting rather than trusting doctor
to catch it.
Then run one turn that forces a tool call, because a plain chat reply would succeed even if tool calling were broken:
hermes chat --model Qwen3.5-122B-A10B-FP8 \
-q "Create a file called hello.txt containing the word hello, then read it back."
Two things about this command differ from what you might expect:
- There is no
-pflag. The non-interactive flag is-q/--query. - Don't pass
--provider mittwald. Hermes'--providerflag only accepts its built-in provider names (auto,openrouter,nous,anthropic, and so on) — a custom provider name is rejected witherror: argument --provider: invalid choice. Leave it unset; Hermes picks upmittwaldfrommodel.providerinconfig.yamlautomatically, so-m/--modelis all you need to add.
A successful run shows the agent preparing a write_file call, printing a diff of
what it's about to write, then preparing a read_file call, then a final message
confirming the round trip:
┊ ✍️ preparing write_file…
┊ review diff
a/hello.txt → b/hello.txt
@@ -0,0 +1 @@
+hello
┊ 📖 preparing read_file…
╭─ ⚕ Hermes ──────────────────────────────────────────────────╮
Done! Created `hello.txt` with the word "hello" and read it back:
```
hello
```
╰─────────────────────────────────────────────────────────────╯
Two separate tool calls, write_file then read_file, both against the mittwald
endpoint — that is tool calling working end to end.
Recommended skills, plugins and MCP servers
Skills
Hermes ships a skill library — nothing to install. List what is available:
hermes skills list
Useful for development work:
codebase-inspection— structured exploration of an unfamiliar repositorygithub-pr-workflow,github-code-review,github-issues— GitHub workflowsnative-mcp,mcporter— working with MCP servers from inside a session
More skills come from registries:
hermes skills search <term>
hermes skills inspect <name> # preview before installing
hermes skills install <name>
hermes skills audit # re-scan installed skills
Plugins
Plugins install from Git repositories:
hermes plugins install owner/repo
hermes plugins list
Nothing is required for mittwald AI Hosting to work — the provider config above is sufficient.
MCP servers
MCP servers give the agent tools beyond files and shell. Add one, then test it:
hermes mcp add context7 --command npx --args -y @upstash/context7-mcp
hermes mcp test context7
hermes mcp list
A useful starting set:
| Server | Command |
|---|---|
| Library documentation | npx -y @upstash/context7-mcp |
| URL fetching | uvx mcp-server-fetch |
| Browser automation | npx -y @playwright/mcp |
| Filesystem access | npx -y @modelcontextprotocol/server-filesystem <path> |
mittwald's own MCP server exposes your infrastructure to the agent:
hermes mcp add mittwald --url https://mcp.mittwald.de/mcp --auth oauth
hermes mcp test mittwald
For the API-token alternative and troubleshooting, see Getting Connected with Hermes Agent.
Troubleshooting
error: argument --provider: invalid choice: 'mittwald'
hermes chat --provider only accepts Hermes' built-in provider names — auto,
openrouter, nous, openai-codex, copilot-acp, copilot, anthropic, gemini,
huggingface, zai, kimi-coding, minimax, minimax-cn, kilocode — not the name
of a custom_providers entry. Passing --provider mittwald fails with this error
before the agent even starts. Omit --provider; with model.provider: mittwald set
in config.yaml, Hermes uses it as the default and -m Qwen3.5-122B-A10B-FP8 is
enough to select the model.
Checking the config and the endpoint separately
hermes doctor and a forced tool call cover two different failure modes, and it's
worth knowing which one you're diagnosing:
hermes doctorsurfaces common setup problems, but it does not reliably validatecustom_providersfield names — a misspelled or unsupported key may simply be ignored instead of reported. Check spelling against the key list in Pointing Hermes at mittwald AI Hosting rather than relying ondoctorto catch it.- If the config parses but the endpoint, key or model is wrong,
doctorwon't catch it either, because it doesn't call the endpoint. A forced tool call (as in Verifying the connection) is what confirms the mittwald endpoint is actually reachable and returning tool calls.
Next steps
- Pi — a second CLI agent
- opencode — a third
- Getting Connected with Hermes Agent — manage mittwald infrastructure from the agent
- AI models — the full model list
Disclaimer
Third-party tools, MCP servers and external links are provided for convenience without endorsement or warranty. Use them at your own risk, review licenses and privacy policies, and scope access conservatively (least privilege). Avoid sending sensitive data to external services unless required and permitted.