mirror of
https://github.com/hanzoai/bot.git
synced 2026-10-30 17:24:26 +00:00
The docs said ~/.hanzo-bot/hanzo-bot.json (and ~/.hanzo-bot-<profile>, hanzo-bot.plugin.json), which nothing reads: src/config/paths.ts resolves ~/.bot, bot.json and ~/.bot-<profile>, and plugins ship bot.plugin.json. Every such path in docs/ now names what the code opens. Co-authored-by: Hanzo Dev <[email protected]>
3.2 KiB
3.2 KiB
summary, read_when, title
| summary | read_when | title | |
|---|---|---|---|
| CLI reference for `hanzo-bot agents` (list/add/delete/bindings/bind/unbind/set identity) |
|
agents |
hanzo-bot agents
Manage isolated agents (workspaces + auth + routing).
Related:
- Multi-agent routing: Multi-Agent Routing
- Agent workspace: Agent workspace
Examples
hanzo-bot agents list
hanzo-bot agents add work --workspace ~/.bot/workspace-work
hanzo-bot agents bindings
hanzo-bot agents bind --agent work --bind telegram:ops
hanzo-bot agents unbind --agent work --bind telegram:ops
hanzo-bot agents set-identity --workspace ~/.bot/workspace --from-identity
hanzo-bot agents set-identity --agent main --avatar avatars/hanzo-bot.png
hanzo-bot agents delete work
Routing bindings
Use routing bindings to pin inbound channel traffic to a specific agent.
List bindings:
hanzo-bot agents bindings
hanzo-bot agents bindings --agent work
hanzo-bot agents bindings --json
Add bindings:
hanzo-bot agents bind --agent work --bind telegram:ops --bind discord:guild-a
If you omit accountId (--bind <channel>), HanzoBot resolves it from channel defaults and plugin setup hooks when available.
Binding scope behavior
- A binding without
accountIdmatches the channel default account only. accountId: "*"is the channel-wide fallback (all accounts) and is less specific than an explicit account binding.- If the same agent already has a matching channel binding without
accountId, and you later bind with an explicit or resolvedaccountId, HanzoBot upgrades that existing binding in place instead of adding a duplicate.
Example:
# initial channel-only binding
hanzo-bot agents bind --agent work --bind telegram
# later upgrade to account-scoped binding
hanzo-bot agents bind --agent work --bind telegram:ops
After the upgrade, routing for that binding is scoped to telegram:ops. If you also want default-account routing, add it explicitly (for example --bind telegram:default).
Remove bindings:
hanzo-bot agents unbind --agent work --bind telegram:ops
hanzo-bot agents unbind --agent work --all
Identity files
Each agent workspace can include an IDENTITY.md at the workspace root:
- Example path:
~/.bot/workspace/IDENTITY.md set-identity --from-identityreads from the workspace root (or an explicit--identity-file)
Avatar paths resolve relative to the workspace root.
Set identity
set-identity writes fields into agents.list[].identity:
namethemeemojiavatar(workspace-relative path, http(s) URL, or data URI)
Load from IDENTITY.md:
hanzo-bot agents set-identity --workspace ~/.bot/workspace --from-identity
Override fields explicitly:
hanzo-bot agents set-identity --agent main --name "HanzoBot" --emoji "🤖" --avatar avatars/hanzo-bot.png
Config sample:
{
agents: {
list: [
{
id: "main",
identity: {
name: "HanzoBot",
theme: "midnight",
emoji: "🤖",
avatar: "avatars/hanzo-bot.png",
},
},
],
},
}