| --- |
| sidebar_position: 9 |
| title: "Tools Runtime" |
| description: "Runtime behavior of the tool registry, toolsets, dispatch, and terminal environments" |
| --- |
| |
| # Tools Runtime |
|
|
| Hermes tools are self-registering functions grouped into toolsets and executed through a central registry/dispatch system. |
|
|
| Primary files: |
|
|
| - `tools/registry.py` |
| - `model_tools.py` |
| - `toolsets.py` |
| - `tools/terminal_tool.py` |
| - `tools/environments/*` |
|
|
| ## Tool registration model |
|
|
| Each tool module calls `registry.register(...)` at import time. |
|
|
| `model_tools.py` is responsible for importing/discovering tool modules and building the schema list used by the model. |
|
|
| ## Toolset resolution |
|
|
| Toolsets are named bundles of tools. Hermes resolves them through: |
|
|
| - explicit enabled/disabled toolset lists |
| - platform presets (`hermes-cli`, `hermes-telegram`, etc.) |
| - dynamic MCP toolsets |
| - curated special-purpose sets like `hermes-acp` |
|
|
| ## Dispatch |
|
|
| At runtime, tools are dispatched through the central registry, with agent-loop exceptions for some agent-level tools such as memory/todo/session-search handling. |
|
|
| ## Terminal/runtime environments |
|
|
| The terminal system supports multiple backends: |
|
|
| - local |
| - docker |
| - ssh |
| - singularity |
| - modal |
| - daytona |
|
|
| It also supports: |
|
|
| - per-task cwd overrides |
| - background process management |
| - PTY mode |
| - approval callbacks for dangerous commands |
|
|
| ## Concurrency |
|
|
| Tool calls may execute sequentially or concurrently depending on the tool mix and interaction requirements. |
|
|
| ## Related docs |
|
|
| - [Toolsets Reference](../reference/toolsets-reference.md) |
| - [Built-in Tools Reference](../reference/tools-reference.md) |
| - [Agent Loop Internals](./agent-loop.md) |
| - [ACP Internals](./acp-internals.md) |
|
|