Tools
aidaemon provides a set of built-in tools the LLM can call autonomously during the agentic loop.
Tool Trait
All tools implement the same interface:
rust
trait Tool {
fn name(&self) -> &str;
fn description(&self) -> &str;
fn schema(&self) -> Value; // OpenAI function-calling format
async fn call(&self, args: &str) -> Result<String>;
}Built-in Tools
| Tool | Description | Config |
|---|---|---|
terminal | Execute shell commands with approval flow | [terminal] |
system_info | Query hostname, OS, uptime, memory | Always enabled |
remember_fact | Store long-term facts in SQLite | Always enabled |
manage_config | Read/update/restore config.toml | Always enabled |
web_search | Search the web (DuckDuckGo or Brave) | [search] |
web_fetch | Fetch and extract readable content from URLs | Always enabled |
browser | Chrome automation with persistent login sessions | [browser] enabled=true |
send_file | Send files to the user via Telegram or Slack | [files] |
spawn_agent | Spawn recursive sub-agents | [subagents] |
cli_agent | Delegate to external CLI tools | [cli_agents] |
scheduler | Create, manage, and run scheduled tasks | [scheduler] |
command_risk | 4-level risk assessment for terminal commands | [terminal] |
health_probe | Manage and run health probes | [health] |
manage_skills | Add, remove, browse, install dynamic skills | [skills] |
manage_people | Personal contact book with birthdays, preferences, relationships | Always registered |
| MCP tools | Dynamically discovered via MCP servers | [mcp.*] |
Dynamic Budget
The agent also has a built-in
request_more_iterations pseudo-tool that extends the agentic loop budget by 10 iterations (up to a hard cap) when the current budget is insufficient to complete a task.Tool Registration Order
Tools are registered during initialization in this order:
- SystemInfoTool
- TerminalTool (with approval channel)
- RememberFactTool
- ConfigManagerTool
- WebFetchTool
- WebSearchTool
- BrowserTool (if enabled)
- SendFileTool (if files.enabled)
- CliAgentTool (if enabled)
- SchedulerTool (if scheduler.enabled)
- HealthProbeTool (if health.enabled)
- ManageSkillsTool
- ManagePeopleTool (always registered, gated internally)
- MCP tools (if configured)