- 25 documentation pages covering Getting Started, User Guide, Developer Guide, and Reference - Docusaurus with custom amber/gold theme matching the landing page branding - GitHub Actions workflow to deploy landing page + docs to GitHub Pages - Landing page at root, docs at /docs/ on hermes-agent.nousresearch.com - Content extracted and restructured from existing repo docs (README, AGENTS.md, CONTRIBUTING.md, docs/) - Auto-deploy on push to main when website/ or landingpage/ changes
1.8 KiB
sidebar_position, title, description
| sidebar_position | title | description |
|---|---|---|
| 8 | Code Execution | Sandboxed Python execution with RPC tool access — collapse multi-step workflows into a single turn |
Code Execution (Programmatic Tool Calling)
The execute_code tool lets the agent write Python scripts that call Hermes tools programmatically, collapsing multi-step workflows into a single LLM turn. The script runs in a sandboxed child process on the agent host, communicating via Unix domain socket RPC.
How It Works
# The agent can write scripts like:
from hermes_tools import web_search, web_extract
results = web_search("Python 3.13 features", limit=5)
for r in results["data"]["web"]:
content = web_extract([r["url"]])
# ... filter and process ...
print(summary)
Available tools in sandbox: web_search, web_extract, read_file, write_file, search, patch, terminal (foreground only).
When the Agent Uses This
The agent uses execute_code when there are:
- 3+ tool calls with processing logic between them
- Bulk data filtering or conditional branching
- Loops over results
The key benefit: intermediate tool results never enter the context window — only the final print() output comes back, dramatically reducing token usage.
Security
:::danger Security Model The child process runs with a minimal environment. API keys, tokens, and credentials are stripped entirely. The script accesses tools exclusively via the RPC channel — it cannot read secrets from environment variables. :::
Only safe system variables (PATH, HOME, LANG, etc.) are passed through.
Configuration
# In ~/.hermes/config.yaml
code_execution:
timeout: 300 # Max seconds per script (default: 300)
max_tool_calls: 50 # Max tool calls per execution (default: 50)