All plugins

tensorfold

TensorFold's native server (github.com/ashhart/TensorFold) as a Hermes model provider (`--provider tensorfold`, or TensorFold in `hermes model`): the served models from its /v1/models and each model's context window from the same list, on `tensorfold serve`'s loopback default (http://127.0.0.1:8080/v1, TENSORFOLD_BASE_URL for another), plus a TensorFold dashboard tab with the server's model, speed, streams, token totals, MTP acceptance and memory. Disclosure — registers one model provider and one dashboard tab and nothing else (no tools, hooks, commands or threads); it connects only to the TensorFold server at TENSORFOLD_BASE_URL: chat requests go through Hermes' own client with TENSORFOLD_API_KEY, the provider reads /v1/models, and the tab's backend route reads /health, /stats and /v1/models, so the key never reaches the browser; it reads and writes no files, starts no processes and reports nothing anywhere.

atakannModelsv0.1.0Updated 4 hours ago

About

TensorFold's native server (github.com/ashhart/TensorFold) as a Hermes model provider (`--provider tensorfold`, or TensorFold in `hermes model`): the served models from its /v1/models and each model's context window from the same list, on `tensorfold serve`'s loopback default (http://127.0.0.1:8080/v1, TENSORFOLD_BASE_URL for another), plus a TensorFold dashboard tab with the server's model, speed, streams, token totals, MTP acceptance and memory. Disclosure — registers one model provider and one dashboard tab and nothing else (no tools, hooks, commands or threads); it connects only to the TensorFold server at TENSORFOLD_BASE_URL: chat requests go through Hermes' own client with TENSORFOLD_API_KEY, the provider reads /v1/models, and the tab's backend route reads /health, /stats and /v1/models, so the key never reaches the browser; it reads and writes no files, starts no processes and reports nothing anywhere.

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/models and 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, /stats and /v1/models every 2 s.

The TensorFold tab in Hermes' dashboard, against a DGX Spark

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/models for the context window, and the tab's route reads /health, /stats and /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.