Skip to main content
Hermes ships with over 40 tools organized into named toolsets. Every platform (CLI, Telegram, Discord, etc.) uses the same core tool list. You can enable or disable individual tools without touching code.

What tools are

Tools are functions the agent calls during a conversation. When you ask Hermes to do something, it decides which tools to invoke, runs them, reads the results, and continues reasoning. Tools are the mechanism behind everything from running a terminal command to searching the web to creating a scheduled task. Each tool has:
  • A name the model uses to call it
  • A JSON schema describing its parameters
  • A handler function that runs the actual logic
  • An optional availability check (e.g., requiring an API key)

The toolset system

Tools are grouped into toolsets — named collections you can enable or disable together. The default toolset for the CLI is hermes-cli, which includes every core tool. You can compose custom toolsets from individual tools or from other toolsets. Some toolsets are composite: they include other toolsets by reference. For example, the debugging toolset includes web, file, and direct terminal/process tools. Configure active toolsets in ~/.hermes/config.yaml:
toolsets:
  - hermes-cli

Core tools

The _HERMES_CORE_TOOLS list defines every tool enabled on all platforms by default.

Web

ToolDescription
web_searchSearch the web and return titles, URLs, and descriptions
web_extractScrape and summarize content from specific URLs
The web backend is configurable (firecrawl, parallel, or tavily). Set web.backend in config.yaml or choose during hermes tools setup.

Terminal & processes

ToolDescription
terminalExecute shell commands; supports foreground, background, PTY mode, and per-command workdir
processManage background processes: poll, wait, list, kill
The terminal tool routes to whichever backend is configured (local, docker, ssh, modal, daytona, or singularity). See Terminal backends for details. Background mode — pass background=true to get a session_id immediately. Use process(action="wait") to block until it completes, or process(action="poll") to check progress without blocking. PTY mode — pass pty=true for interactive CLI tools (Python REPL, Codex, Claude Code) that require a pseudo-terminal.

File operations

ToolDescription
read_fileRead files with line numbers and pagination (offset/limit); use instead of cat
write_fileWrite or overwrite a file; creates parent directories automatically
patchTargeted find-and-replace using fuzzy matching (9 strategies); use instead of sed/awk
search_filesSearch file contents (regex) or find files by glob; use instead of grep/find/ls

Vision & image generation

ToolDescription
vision_analyzeAnalyze an image and answer questions about it
image_generateGenerate an image from a text description

Browser automation

ToolDescription
browser_navigateOpen a URL in a managed browser
browser_snapshotCapture a DOM/accessibility snapshot of the current page
browser_clickClick an element by selector or coordinates
browser_typeType text into a focused input
browser_scrollScroll the page or a specific element
browser_backNavigate back
browser_pressPress a keyboard key
browser_closeClose the current tab
browser_get_imagesExtract image URLs from the page
browser_visionAnalyze the current page with vision
browser_consoleRead the browser console log

Code execution & delegation

ToolDescription
execute_codeRun a Python script that calls tools via RPC; collapses multi-step pipelines into a single turn
delegate_taskSpawn an isolated subagent with its own context window for complex parallel subtasks

Planning & memory

ToolDescription
todoCreate and track a task list for multi-step work
memoryRead and write persistent memory (MEMORY.md / USER.md)
session_searchFull-text search across past conversations with LLM summarization

Skills

ToolDescription
skills_listList available skills with filtering and search
skill_viewRead the content of a specific skill
skill_manageCreate, edit, patch, or delete skills

Scheduling & messaging

ToolDescription
cronjobCreate, list, edit, pause, resume, trigger, and remove scheduled jobs
send_messageSend a message to any connected platform (Telegram, Discord, Slack, etc.)
text_to_speechConvert text to audio using Edge TTS, ElevenLabs, or OpenAI
clarifyAsk the user a clarifying question (multiple-choice or open-ended)

Mixture of agents

ToolDescription
mixture_of_agentsRun advanced multi-model reasoning for complex problem-solving

Honcho memory (optional)

ToolDescription
honcho_contextRetrieve context from Honcho user modeling
honcho_profileRead the Honcho user profile
honcho_searchSearch Honcho memory
honcho_concludeWrite session conclusions to Honcho
Honcho tools are gated on the Honcho integration being active. See Memory for setup.

Home Assistant (optional)

ToolDescription
ha_list_entitiesList Home Assistant entities
ha_get_stateGet the current state of an entity
ha_list_servicesList available services
ha_call_serviceCall a Home Assistant service
Home Assistant tools are gated on the HASS_TOKEN environment variable.

Tool categories

Web

web_search, web_extract — research and content extraction

Terminal

terminal, process — command execution and process management

Files

read_file, write_file, patch, search_files — file manipulation

Browser

11 browser tools — full web automation via Browserbase

Vision

vision_analyze, image_generate — image analysis and generation

Memory & Skills

memory, todo, session_search, skills_list, skill_view, skill_manage

Delegation

execute_code, delegate_task — code execution and subagent spawning

Scheduling

cronjob, send_message — cron jobs and cross-platform messaging

Enabling and disabling tools

hermes tools command

Run hermes tools from your terminal to open an interactive menu for enabling or disabling tools per platform:
hermes tools
This writes your choices to ~/.hermes/config.yaml under the toolsets key.

/tools slash command

Inside a running chat session, use /tools to see which tools are currently active.

Per-platform configuration

Each platform can have its own toolset. The platform toolsets (hermes-cli, hermes-telegram, hermes-discord, etc.) all use the same _HERMES_CORE_TOOLS list by default. To restrict a platform, define a custom toolset:
# ~/.hermes/config.yaml
toolsets:
  - web
  - file
  - terminal
Or reference one of the built-in scenario toolsets:
ToolsetDescription
safeNo terminal; includes web, vision, image generation, and MoA
debuggingTerminal + web + file tools
researchWeb + vision
browserFull browser automation + web search
code_executionexecute_code only
delegationdelegate_task only
Changing toolsets takes effect on the next session start. Toolset changes mid-conversation would break Anthropic prompt caching and significantly increase API costs.

Build docs developers (and LLMs) love