--- 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)