Skip to content

Tools Overview

Tools give the AI agent the ability to act: run commands, read/write files, search the web, manage memory, and interact with hardware. Each tool implements the hu_tool_t vtable.

| Method | Description | | ----------------- | ------------------------------------------------------ | | execute | Run the tool with JSON args, return hu_tool_result_t | | name | Tool identifier (e.g. shell, file_read) | | description | Human-readable description for the LLM | | parameters_json | JSON Schema for the tool’s parameters | | deinit | Optional cleanup |

| Tool | Description | | --------------- | ------------------------------------------------------------ | | shell | Execute shell commands (allowlisted, sandboxed) | | file_read | Read file contents from workspace | | file_write | Write content to a file | | file_edit | Search-and-replace or structured edits | | file_append | Append to a file | | git | Git operations (status, diff, commit) | | web_search | Web search (DuckDuckGo by default) | | web_fetch | Fetch URL content (HTTPS only, size limited) | | http_request | HTTP/HTTPS requests | | browser | Browser actions: open, read, screenshot, click, type, scroll | | browser_open | Open approved HTTPS URLs in default browser | | image | Image operations (load, process) | | screenshot | Capture screenshots | | memory_store | Store a fact or memory entry | | memory_recall | Recall memories by query | | memory_list | List stored memories | | memory_forget | Remove a memory by ID | | message | Send a message (e.g. to a channel) | | delegate | Delegate tasks to sub-agents (routes to claude_code) | | spawn | Spawn child processes | | cron_add | Add a cron job | | cron_list | List cron jobs | | cron_remove | Remove a cron job | | cron_run | Run a cron job immediately | | cron_runs | List recent cron execution history | | cron_update | Update a cron job | | claude_code | Delegate coding tasks to Claude Code CLI (sub-agent) | | composio | Composio integration (list tools, execute actions) | | hardware_memory | Read/write hardware memory via probe-rs or serial | | schedule | Scheduled tasks (create, list, cancel, pause) | | schema | Validate JSON schemas, list tool schemas | | pushover | Push notifications via Pushover | | hardware_info | System hardware info | | i2c | I2C bus read/write | | spi | SPI bus operations |

Enable or disable tools via config:

{
"tools": {
"enabled_tools": ["shell", "file_read", "memory_store"],
"disabled_tools": ["browser_open", "spawn"]
}
}
  • enabled_tools: If non-empty, only these tools are available
  • disabled_tools: These tools are always disabled
  • Empty enabled_tools = all tools except disabled_tools
  • Shell: Commands are allowlisted; execution is sandboxed (Landlock, Firejail, Bubblewrap, or Docker when available)
  • File operations: Restricted to workspace by default
  • HTTP: HTTPS required; HTTP URLs are rejected
  • browser_open: Only allowlisted domains

Most file and shell tools respect workspace_dir. The agent cannot access paths outside the workspace unless explicitly allowed.