docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
---
docs: guides section overhaul — fix existing + add 3 new tutorials (#5735)
* docs: fix guides section — sidebar ordering, broken links, position conflicts
- Add local-llm-on-mac.md to sidebars.ts (was missing after salvage PR)
- Reorder sidebar: tips first, then local LLM guide, then tutorials
- Fix 10 broken links in team-telegram-assistant.md (missing /docs/ prefix)
- Fix relative link in migrate-from-openclaw.md
- Fix installation link pointing to learning-path instead of installation
- Renumber all sidebar_position values to eliminate conflicts and match
the explicit sidebars.ts ordering
* docs: add 3 new guides — cron automation, skills, delegation
New tutorial-style guides covering core features:
- automate-with-cron.md (261 lines): 5 real-world patterns — website
monitoring with scripts, weekly reports, GitHub watchers, data
collection pipelines, multi-skill workflows. Covers [SILENT] trick,
delivery targets, job management.
- work-with-skills.md (268 lines): End-to-end skill workflow — finding,
installing from Hub, configuring, creating from scratch with reference
files, per-platform management, skills vs memory comparison.
- delegation-patterns.md (239 lines): 5 patterns — parallel research,
code review, alternative comparison, multi-file refactoring,
gather-then-analyze (execute_code + delegate). Covers the context
problem, toolset selection, constraints.
Added all three to sidebars.ts in the Guides & Tutorials section.
2026-04-06 22:02:47 -07:00
sidebar_position: 5
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
title: "Using Hermes as a Python Library"
description: "Embed AIAgent in your own Python scripts, web apps, or automation pipelines — no CLI required"
---
# Using Hermes as a Python Library
Hermes isn't just a CLI tool. You can import `AIAgent` directly and use it programmatically in your own Python scripts, web applications, or automation pipelines. This guide shows you how.
---
## Installation
Install Hermes directly from the repository:
```bash
pip install git+https://github.com/NousResearch/hermes-agent.git
```
Or with [uv ](https://docs.astral.sh/uv/ ):
```bash
uv pip install git+https://github.com/NousResearch/hermes-agent.git
```
You can also pin it in your `requirements.txt` :
```text
hermes-agent @ git+https://github.com/NousResearch/hermes-agent.git
```
:::tip
The same environment variables used by the CLI are required when using Hermes as a library. At minimum, set `OPENROUTER_API_KEY` (or `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` if using direct provider access).
:::
---
## Basic Usage
The simplest way to use Hermes is the `chat()` method — pass a message, get a string back:
```python
from run_agent import AIAgent
agent = AIAgent(
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782)
* docs(audit): correctness pass across getting-started, reference, features, messaging, developer-guide, guides, integrations, user-guide
* docs: add PR coverage for last 30d + Nous Portal weave + nav reorg + build fixes
- Add docs for top user-visible PRs that shipped without docs (api-server
session control, kanban features, telegram pin/edit, provider client tag,
xAI retired-model migration, cron name lookup, --branch update flag, etc.)
- Apply Nous Portal weave across 23 pages (tasteful one-liners on
getting-started/learning-path, configuration, overview, vision, x-search,
credential-pools, provider-routing, cron, codex-runtime, profiles, docker,
messaging/index, multiple guides, plus FAQ + index promotion)
- Reorganize sidebar: split Messaging into Popular/M365/Chinese/Other,
Reference into Command/Configuration/Tools-Skills sub-categories, add
orphan developer-guide pages (web-search-provider-plugin,
browser-supervisor), move features from Integrations back to Features,
fold lone spotify into Media & Web.
- Regenerate skill stubs + catalogs (kanban-codex-lane, hermes-s6-container-
supervision, web-pentest)
- Fix broken anchor links (security/cron, configuration/fallback, telegram
large-files, adding-platform-adapters step-by-step)
2026-05-28 02:41:36 -07:00
model="anthropic/claude-sonnet-4.6",
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
quiet_mode=True,
)
response = agent.chat("What is the capital of France?")
print(response)
```
`chat()` handles the full conversation loop internally — tool calls, retries, everything — and returns just the final text response.
:::warning
Always set `quiet_mode=True` when embedding Hermes in your own code. Without it, the agent prints CLI spinners, progress indicators, and other terminal output that will clutter your application's output.
:::
---
## Full Conversation Control
For more control over the conversation, use `run_conversation()` directly. It returns a dictionary with the full response, message history, and metadata:
```python
agent = AIAgent(
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782)
* docs(audit): correctness pass across getting-started, reference, features, messaging, developer-guide, guides, integrations, user-guide
* docs: add PR coverage for last 30d + Nous Portal weave + nav reorg + build fixes
- Add docs for top user-visible PRs that shipped without docs (api-server
session control, kanban features, telegram pin/edit, provider client tag,
xAI retired-model migration, cron name lookup, --branch update flag, etc.)
- Apply Nous Portal weave across 23 pages (tasteful one-liners on
getting-started/learning-path, configuration, overview, vision, x-search,
credential-pools, provider-routing, cron, codex-runtime, profiles, docker,
messaging/index, multiple guides, plus FAQ + index promotion)
- Reorganize sidebar: split Messaging into Popular/M365/Chinese/Other,
Reference into Command/Configuration/Tools-Skills sub-categories, add
orphan developer-guide pages (web-search-provider-plugin,
browser-supervisor), move features from Integrations back to Features,
fold lone spotify into Media & Web.
- Regenerate skill stubs + catalogs (kanban-codex-lane, hermes-s6-container-
supervision, web-pentest)
- Fix broken anchor links (security/cron, configuration/fallback, telegram
large-files, adding-platform-adapters step-by-step)
2026-05-28 02:41:36 -07:00
model="anthropic/claude-sonnet-4.6",
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
quiet_mode=True,
)
result = agent.run_conversation(
user_message="Search for recent Python 3.13 features",
task_id="my-task-1",
)
print(result["final_response"])
print(f"Messages exchanged: {len(result['messages'])}")
```
The returned dictionary contains:
- **`final_response` ** — The agent's final text reply
- **`messages` ** — The complete message history (system, user, assistant, tool calls)
docs: round 2 audit — messaging, developer-guide, guides, integrations (#22858)
Cross-checked 75 docs pages under user-guide/messaging/, developer-guide/,
guides/, and integrations/ against the live registries and gateway code.
messaging/
- index.md: API Server toolset is hermes-api-server (was 'hermes (default)');
Google Chat slug is hermes-google_chat (underscore — plugin name uses _).
- google_chat.md: drop bogus 'pip install hermes-agent[google_chat]' (no such
extra); list the actual deps (google-cloud-pubsub, google-api-python-client,
google-auth, google-auth-oauthlib).
- qqbot.md: config namespace is platforms.qqbot (was platforms.qq, which is
silently ignored by the adapter); QQ_STT_BASE_URL is not read directly —
baseUrl lives under platforms.qqbot.extra.stt.
- teams-meetings.md: 'hermes teams-pipeline' is plugin-gated (teams_pipeline
plugin must be enabled), not a built-in subcommand.
- sms.md: example log line 0.0.0.0:8080 -> 127.0.0.1:8080 (default
SMS_WEBHOOK_HOST).
- open-webui.md: API_SERVER_* are env vars, not YAML keys — write them to
per-profile .env, not 'hermes config set' (same pattern fixed in
api-server.md last round). Also bumped example ports to 8650+ to dodge the
default webhook (8644)/wecom-callback (8645)/msgraph-webhook (8646)
collision.
developer-guide/
- architecture.md: tool/toolset counts (61/52 -> 70+/~28); LOC stamps for
run_agent.py, cli.py, hermes_cli/main.py, setup.py, mcp_tool.py,
gateway/run.py replaced with 'large file' to stop drifting.
- agent-loop.md: same LOC drift (~13,700 -> 'a large file (15k+ lines)').
- gateway-internals.md: '14+ external messaging platforms' -> '20+'; gateway
platform tree updated (qqbot is a sub-package, not qqbot.py; added
yuanbao.py, feishu_comment.py, msgraph_webhook.py); 'gateway/builtin_hooks/
(always active)' was wrong — it's an empty extension point and
_register_builtin_hooks() is a no-op stub.
- acp-internals.md: drop fictional 'message_callback' from the bridged-
callbacks list; clarify thinking_callback is currently set to None.
- provider-runtime.md: provider list was missing AWS Bedrock, Azure Foundry,
NVIDIA NIM, xAI, Arcee, GMI Cloud, StepFun, Qwen OAuth, Xiaomi, Ollama
Cloud, LM Studio, Tencent TokenHub. Fallback section described only the
legacy single-pair model — corrected to the canonical list-form
fallback_providers chain.
- environments.md: parsers list missing llama4_json and the deepseek_v31
alias; both register via @register_parser.
- browser-supervisor.md: drop reference to scripts/browser_supervisor_e2e.py
which doesn't exist in-repo.
- contributing.md: tinker-atropos is a git submodule — note that
'git submodule update --init' is required if cloning without
--recurse-submodules.
guides/
- operate-teams-meeting-pipeline.md: cron flags were all wrong — schedule is
positional (not --schedule), the script-only flag is --no-agent (not
--script-only), and there's no --command flag. Replaced with a real example
that creates the script under ~/.hermes/scripts/ and uses the actual flags.
Also replaced fictional 'hermes cron show <name>' with 'hermes cron status'.
- automation-templates.md: 'cron create --skills "a,b"' doesn't work —
the flag is --skill (singular, repeatable). Fixed all 5 occurrences via AST
rewrite.
- minimax-oauth.md: 'hermes auth add minimax-oauth --region cn' silently
fails because --region isn't registered on the auth-add argparse spec.
Pointed users at the minimax-cn provider (or MINIMAX_CN_API_KEY env) for
China-region access.
- cron-script-only.md: 'hermes send' is fictional — replaced the comparison-
table mention with a webhook-subscription pointer; also fixed the dead link
to /guides/pipe-script-output (page doesn't exist).
- cron-troubleshooting.md: 'hermes serve' isn't a real subcommand. Pointed
at 'hermes gateway' (foreground) / 'hermes gateway start' (service).
- local-ollama-setup.md: 'agent.api_timeout' is not a config key. The right
knob is the HERMES_API_TIMEOUT env var.
- python-library.md: run_conversation() return dict has only final_response
and messages — task_id is stored on the agent instance, not echoed back.
- use-mcp-with-hermes.md: '--args /c "npx -y …"' wraps the npx command in
one quoted string, so cmd.exe gets a single arg instead of the multi-token
command line it needs. Removed the surrounding quotes — argparse nargs='*'
collects each token correctly.
integrations/
- providers.md: Bedrock guardrail YAML keys were 'id'/'version' (don't exist);
actual keys are guardrail_identifier/guardrail_version (matches DEFAULT_CONFIG
and the run_agent.py reader). GMI default base URL (api.gmi.ai/v1 ->
api.gmi-serving.com/v1) and portal URL (inference.gmi.ai -> www.gmicloud.ai)
refreshed. Fallback section rewritten to lead with the canonical
fallback_providers list form (was leading with the legacy fallback_model
single dict); supported-providers list extended to include azure-foundry,
alibaba-coding-plan, lmstudio.
index.md
- '68 built-in tools' -> '70+'; '15+ platforms' was both inconsistent with
integrations/index.md ('19+') and undercounted — bumped to 20+ and added
Weixin/QQ Bot/Yuanbao/Google Chat to the list.
Validation: 'npm run build' clean (exit 0); broken-link count unchanged at
155 (same as round-1 post-skill-regen baseline). 24 files, +132/-89.
2026-05-09 15:00:24 -07:00
(The `task_id` you pass in is stored on the agent instance for VM isolation but isn't echoed back in the return dict.)
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
You can also pass a custom system message that overrides the ephemeral system prompt for that call:
```python
result = agent.run_conversation(
user_message="Explain quicksort",
system_message="You are a computer science tutor. Use simple analogies.",
)
```
---
## Configuring Tools
Control which toolsets the agent has access to using `enabled_toolsets` or `disabled_toolsets` :
```python
# Only enable web tools (browsing, search)
agent = AIAgent(
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782)
* docs(audit): correctness pass across getting-started, reference, features, messaging, developer-guide, guides, integrations, user-guide
* docs: add PR coverage for last 30d + Nous Portal weave + nav reorg + build fixes
- Add docs for top user-visible PRs that shipped without docs (api-server
session control, kanban features, telegram pin/edit, provider client tag,
xAI retired-model migration, cron name lookup, --branch update flag, etc.)
- Apply Nous Portal weave across 23 pages (tasteful one-liners on
getting-started/learning-path, configuration, overview, vision, x-search,
credential-pools, provider-routing, cron, codex-runtime, profiles, docker,
messaging/index, multiple guides, plus FAQ + index promotion)
- Reorganize sidebar: split Messaging into Popular/M365/Chinese/Other,
Reference into Command/Configuration/Tools-Skills sub-categories, add
orphan developer-guide pages (web-search-provider-plugin,
browser-supervisor), move features from Integrations back to Features,
fold lone spotify into Media & Web.
- Regenerate skill stubs + catalogs (kanban-codex-lane, hermes-s6-container-
supervision, web-pentest)
- Fix broken anchor links (security/cron, configuration/fallback, telegram
large-files, adding-platform-adapters step-by-step)
2026-05-28 02:41:36 -07:00
model="anthropic/claude-sonnet-4.6",
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
enabled_toolsets=["web"],
quiet_mode=True,
)
# Enable everything except terminal access
agent = AIAgent(
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782)
* docs(audit): correctness pass across getting-started, reference, features, messaging, developer-guide, guides, integrations, user-guide
* docs: add PR coverage for last 30d + Nous Portal weave + nav reorg + build fixes
- Add docs for top user-visible PRs that shipped without docs (api-server
session control, kanban features, telegram pin/edit, provider client tag,
xAI retired-model migration, cron name lookup, --branch update flag, etc.)
- Apply Nous Portal weave across 23 pages (tasteful one-liners on
getting-started/learning-path, configuration, overview, vision, x-search,
credential-pools, provider-routing, cron, codex-runtime, profiles, docker,
messaging/index, multiple guides, plus FAQ + index promotion)
- Reorganize sidebar: split Messaging into Popular/M365/Chinese/Other,
Reference into Command/Configuration/Tools-Skills sub-categories, add
orphan developer-guide pages (web-search-provider-plugin,
browser-supervisor), move features from Integrations back to Features,
fold lone spotify into Media & Web.
- Regenerate skill stubs + catalogs (kanban-codex-lane, hermes-s6-container-
supervision, web-pentest)
- Fix broken anchor links (security/cron, configuration/fallback, telegram
large-files, adding-platform-adapters step-by-step)
2026-05-28 02:41:36 -07:00
model="anthropic/claude-sonnet-4.6",
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
disabled_toolsets=["terminal"],
quiet_mode=True,
)
```
:::tip
Use `enabled_toolsets` when you want a minimal, locked-down agent (e.g., only web search for a research bot). Use `disabled_toolsets` when you want most capabilities but need to restrict specific ones (e.g., no terminal access in a shared environment).
:::
---
## Multi-turn Conversations
Maintain conversation state across multiple turns by passing the message history back in:
```python
agent = AIAgent(
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782)
* docs(audit): correctness pass across getting-started, reference, features, messaging, developer-guide, guides, integrations, user-guide
* docs: add PR coverage for last 30d + Nous Portal weave + nav reorg + build fixes
- Add docs for top user-visible PRs that shipped without docs (api-server
session control, kanban features, telegram pin/edit, provider client tag,
xAI retired-model migration, cron name lookup, --branch update flag, etc.)
- Apply Nous Portal weave across 23 pages (tasteful one-liners on
getting-started/learning-path, configuration, overview, vision, x-search,
credential-pools, provider-routing, cron, codex-runtime, profiles, docker,
messaging/index, multiple guides, plus FAQ + index promotion)
- Reorganize sidebar: split Messaging into Popular/M365/Chinese/Other,
Reference into Command/Configuration/Tools-Skills sub-categories, add
orphan developer-guide pages (web-search-provider-plugin,
browser-supervisor), move features from Integrations back to Features,
fold lone spotify into Media & Web.
- Regenerate skill stubs + catalogs (kanban-codex-lane, hermes-s6-container-
supervision, web-pentest)
- Fix broken anchor links (security/cron, configuration/fallback, telegram
large-files, adding-platform-adapters step-by-step)
2026-05-28 02:41:36 -07:00
model="anthropic/claude-sonnet-4.6",
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
quiet_mode=True,
)
# First turn
result1 = agent.run_conversation("My name is Alice")
history = result1["messages"]
# Second turn — agent remembers the context
result2 = agent.run_conversation(
"What's my name?",
conversation_history=history,
)
print(result2["final_response"]) # "Your name is Alice."
```
The `conversation_history` parameter accepts the `messages` list from a previous result. The agent copies it internally, so your original list is never mutated.
---
## Saving Trajectories
Enable trajectory saving to capture conversations in ShareGPT format — useful for generating training data or debugging:
```python
agent = AIAgent(
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782)
* docs(audit): correctness pass across getting-started, reference, features, messaging, developer-guide, guides, integrations, user-guide
* docs: add PR coverage for last 30d + Nous Portal weave + nav reorg + build fixes
- Add docs for top user-visible PRs that shipped without docs (api-server
session control, kanban features, telegram pin/edit, provider client tag,
xAI retired-model migration, cron name lookup, --branch update flag, etc.)
- Apply Nous Portal weave across 23 pages (tasteful one-liners on
getting-started/learning-path, configuration, overview, vision, x-search,
credential-pools, provider-routing, cron, codex-runtime, profiles, docker,
messaging/index, multiple guides, plus FAQ + index promotion)
- Reorganize sidebar: split Messaging into Popular/M365/Chinese/Other,
Reference into Command/Configuration/Tools-Skills sub-categories, add
orphan developer-guide pages (web-search-provider-plugin,
browser-supervisor), move features from Integrations back to Features,
fold lone spotify into Media & Web.
- Regenerate skill stubs + catalogs (kanban-codex-lane, hermes-s6-container-
supervision, web-pentest)
- Fix broken anchor links (security/cron, configuration/fallback, telegram
large-files, adding-platform-adapters step-by-step)
2026-05-28 02:41:36 -07:00
model="anthropic/claude-sonnet-4.6",
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
save_trajectories=True,
quiet_mode=True,
)
agent.chat("Write a Python function to sort a list")
# Saves to trajectory_samples.jsonl in ShareGPT format
```
Each conversation is appended as a single JSONL line, making it easy to collect datasets from automated runs.
---
## Custom System Prompts
Use `ephemeral_system_prompt` to set a custom system prompt that guides the agent's behavior but is **not** saved to trajectory files (keeping your training data clean):
```python
agent = AIAgent(
model="anthropic/claude-sonnet-4",
ephemeral_system_prompt="You are a SQL expert. Only answer database questions.",
quiet_mode=True,
)
response = agent.chat("How do I write a JOIN query?")
print(response)
```
This is ideal for building specialized agents — a code reviewer, a documentation writer, a SQL assistant — all using the same underlying tooling.
---
## Batch Processing
For running many prompts in parallel, Hermes includes `batch_runner.py` . It manages concurrent `AIAgent` instances with proper resource isolation:
```bash
python batch_runner.py --input prompts.jsonl --output results.jsonl
```
Each prompt gets its own `task_id` and isolated environment. If you need custom batch logic, you can build your own using `AIAgent` directly:
```python
import concurrent.futures
from run_agent import AIAgent
prompts = [
"Explain recursion",
"What is a hash table?",
"How does garbage collection work?",
]
def process_prompt(prompt):
# Create a fresh agent per task for thread safety
agent = AIAgent(
model="anthropic/claude-sonnet-4",
quiet_mode=True,
skip_memory=True,
)
return agent.chat(prompt)
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
results = list(executor.map(process_prompt, prompts))
for prompt, result in zip(prompts, results):
print(f"Q: {prompt}\nA: {result}\n")
```
:::warning
Always create a **new `AIAgent` instance per thread or task** . The agent maintains internal state (conversation history, tool sessions, iteration counters) that is not thread-safe to share.
:::
---
## Integration Examples
### FastAPI Endpoint
```python
from fastapi import FastAPI
from pydantic import BaseModel
from run_agent import AIAgent
app = FastAPI()
class ChatRequest(BaseModel):
message: str
model: str = "anthropic/claude-sonnet-4"
@app .post("/chat")
async def chat(request: ChatRequest):
agent = AIAgent(
model=request.model,
quiet_mode=True,
skip_context_files=True,
skip_memory=True,
)
response = agent.chat(request.message)
return {"response": response}
```
### Discord Bot
```python
import discord
from run_agent import AIAgent
client = discord.Client(intents=discord.Intents.default())
@client .event
async def on_message(message):
if message.author == client.user:
return
if message.content.startswith("!hermes "):
query = message.content[8:]
agent = AIAgent(
model="anthropic/claude-sonnet-4",
quiet_mode=True,
skip_context_files=True,
skip_memory=True,
platform="discord",
)
response = agent.chat(query)
await message.channel.send(response[:2000])
client.run("YOUR_DISCORD_TOKEN")
```
### CI/CD Pipeline Step
```python
#!/usr/bin/env python3
"""CI step: auto-review a PR diff."""
import subprocess
from run_agent import AIAgent
diff = subprocess.check_output(["git", "diff", "main...HEAD"]).decode()
agent = AIAgent(
model="anthropic/claude-sonnet-4",
quiet_mode=True,
skip_context_files=True,
skip_memory=True,
disabled_toolsets=["terminal", "browser"],
)
review = agent.chat(
f"Review this PR diff for bugs, security issues, and style problems:\n\n{diff}"
)
print(review)
```
---
## Key Constructor Parameters
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
docs: 30-day overhaul — correctness audit, PR coverage, Nous Portal weave, sidebar reorg (#33782)
* docs(audit): correctness pass across getting-started, reference, features, messaging, developer-guide, guides, integrations, user-guide
* docs: add PR coverage for last 30d + Nous Portal weave + nav reorg + build fixes
- Add docs for top user-visible PRs that shipped without docs (api-server
session control, kanban features, telegram pin/edit, provider client tag,
xAI retired-model migration, cron name lookup, --branch update flag, etc.)
- Apply Nous Portal weave across 23 pages (tasteful one-liners on
getting-started/learning-path, configuration, overview, vision, x-search,
credential-pools, provider-routing, cron, codex-runtime, profiles, docker,
messaging/index, multiple guides, plus FAQ + index promotion)
- Reorganize sidebar: split Messaging into Popular/M365/Chinese/Other,
Reference into Command/Configuration/Tools-Skills sub-categories, add
orphan developer-guide pages (web-search-provider-plugin,
browser-supervisor), move features from Integrations back to Features,
fold lone spotify into Media & Web.
- Regenerate skill stubs + catalogs (kanban-codex-lane, hermes-s6-container-
supervision, web-pentest)
- Fix broken anchor links (security/cron, configuration/fallback, telegram
large-files, adding-platform-adapters step-by-step)
2026-05-28 02:41:36 -07:00
| `model` | `str` | `""` | Model in OpenRouter format (defaults to empty; resolved from your hermes config at runtime) |
docs: add Guides & Tutorials section, restructure sidebar
New documentation pages (1,823 lines):
- getting-started/learning-path.md: 3-tier learning path table
(beginner/intermediate/advanced) + use-case-based navigation
- guides/tips.md: Tips & Best Practices quick-wins collection
covering prompting, CLI power user tips, context files, memory,
performance/cost, messaging, and security
- guides/daily-briefing-bot.md: End-to-end tutorial building an
automated daily news briefing with cron + web search + messaging
- guides/team-telegram-assistant.md: Full walkthrough setting up
a team Telegram bot with BotFather, gateway, DM pairing, and
production deployment
- guides/python-library.md: Guide to using AIAgent as a Python
library — basic usage, multi-turn conversations, toolset config,
trajectories, custom prompts, and integration examples (FastAPI,
Discord bot, CI/CD)
- reference/faq.md: Centralized FAQ (8 questions) + troubleshooting
guide (6 categories, 18 specific issues) with problem/cause/solution
format
Sidebar restructure:
- Added 'Guides & Tutorials' as new top-level section
- Reorganized flat Features list (17 items) into 5 subcategories:
Core Features, Automation, Web & Media, Integrations, Advanced
- Added FAQ to Reference section
- Updated index.md quick links table
Docusaurus build verified clean.
2026-03-08 19:37:34 -07:00
| `quiet_mode` | `bool` | `False` | Suppress CLI output |
| `enabled_toolsets` | `List[str]` | `None` | Whitelist specific toolsets |
| `disabled_toolsets` | `List[str]` | `None` | Blacklist specific toolsets |
| `save_trajectories` | `bool` | `False` | Save conversations to JSONL |
| `ephemeral_system_prompt` | `str` | `None` | Custom system prompt (not saved to trajectories) |
| `max_iterations` | `int` | `90` | Max tool-calling iterations per conversation |
| `skip_context_files` | `bool` | `False` | Skip loading AGENTS.md files |
| `skip_memory` | `bool` | `False` | Disable persistent memory read/write |
| `api_key` | `str` | `None` | API key (falls back to env vars) |
| `base_url` | `str` | `None` | Custom API endpoint URL |
| `platform` | `str` | `None` | Platform hint (`"discord"` , `"telegram"` , etc.) |
---
## Important Notes
:::tip
- Set ** `skip_context_files=True` ** if you don't want `AGENTS.md` files from the working directory loaded into the system prompt.
- Set ** `skip_memory=True` ** to prevent the agent from reading or writing persistent memory — recommended for stateless API endpoints.
- The `platform` parameter (e.g., `"discord"` , `"telegram"` ) injects platform-specific formatting hints so the agent adapts its output style.
:::
:::warning
- **Thread safety**: Create one `AIAgent` per thread or task. Never share an instance across concurrent calls.
- **Resource cleanup**: The agent automatically cleans up resources (terminal sessions, browser instances) when a conversation ends. If you're running in a long-lived process, ensure each conversation completes normally.
- **Iteration limits**: The default `max_iterations=90` is generous. For simple Q& A use cases, consider lowering it (e.g., `max_iterations=10` ) to prevent runaway tool-calling loops and control costs.
:::