hermes-tensorfold
A Hermes Agent plugin for TensorFold's native server:
- A model provider. TensorFold appears in Hermes' model picker as "TensorFold". Hermes reads the served models from the server's
/v1/modelsand each model's context window from the same list. - A dashboard tab. The web dashboard gets a TensorFold page with the server's model, speed, streams, token counts, MTP acceptance and memory, read from its
/health,/statsand/v1/modelsevery 2 s.

The plugin talks to http://127.0.0.1:8080/v1 by default, which is tensorfold serve's own bind: the engine stays on loopback with its API key. Nothing changes the engine's tokens.
Install
hermes plugins install atakann/hermes-tensorfold
hermes plugins enable tensorfold
Then give Hermes the server's API key and pick the model:
echo 'TENSORFOLD_API_KEY=<the key you gave tensorfold serve>' >> ~/.hermes/.env
hermes model # choose TensorFold, then the served model
A server started without --api-key takes any value; a scoped key needs inference,read (chat and the tab's reads). For the dashboard tab, start the server with --dashboard (it serves /stats only then), and open hermes dashboard.
Settings
| Variable | Default | Meaning |
|---|---|---|
| TENSORFOLD_API_KEY | none | The key the server was started with |
| TENSORFOLD_BASE_URL | http://127.0.0.1:8080/v1 | The server's OpenAI-compatible root |
A server on another machine: keep it on that machine's loopback and forward a port, for example ssh -N -L 8080:127.0.0.1:8080 my-gpu-box. Then the default base URL works unchanged.
Tool calls
Hermes' agent loop sends no tool_choice, so the server's auto applies. Some auxiliary requests can ask for required, which TensorFold enforces with its grammar library: the release archives include it (lib/libtfgrammar.so). A source build without it answers such a request with HTTP 400 and the reason.
What it does on your machine
- It registers one model provider and one dashboard tab, and nothing else: no tools, hooks, commands, skills or background threads.
- It connects only to the TensorFold server at
TENSORFOLD_BASE_URL(the loopback default unless you set it): Hermes' own client sends the chat requests, the provider reads/v1/modelsfor the context window, and the tab's route reads/health,/statsand/v1/models. The API key goes only to that server, from the tab's route on the dashboard's side, never to the browser. - It reads and writes no files, starts no processes and reports nothing anywhere.
Checked with
Hermes Agent v0.23.0 and TensorFold 1.2.3 serving Qwen3.8-Flash-Next FP4-Local on a DGX Spark (GB10): hermes plugins doctor passes; the model picker lists TensorFold; chat and tool use work; a reply cancelled mid-stream frees its stream on the server, and the next request answers; with the server stopped Hermes reports an error, and it answers again once the server is back; the dashboard's numbers equal /stats.
On an M1 Max (64 GB) with the macOS release serving Qwen3.8-27B MLX 4-bit behind a scoped key, the same checks pass with the endpoint and key only in ~/.hermes/.env.
License
MIT
README from the reviewed commit 2d8bf58; it updates when the author re-pins.

atakann