Tools Runtime
Hermes tools are self-registering functions grouped into toolsets and executed through a central registry/dispatch system.
Primary files:
tools/registry.pymodel_tools.pytoolsets.pytools/terminal_tool.pytools/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.