CheapClaw multi-bot orchestration CLI
Project description
CheapClaw
CheapClaw is a multi-bot orchestration app built on top of the infiagent SDK.
Introduction
Write your own project introduction here.
Good things to explain:
- who CheapClaw is for
- what kind of orchestration problems it solves
- how your supervisor + worker model differs from other multi-agent apps
What CheapClaw Does
- Runs one or more bots on top of a shared LLM config.
- Lets you start from built-in web chat, then add social channels later.
- Routes new user messages intelligently:
- direct reply
- continue an old
task_id - append to a running task
- start a new task branch
- Supports custom agent systems installed as zip packages.
- Includes a built-in dashboard for configuration, monitoring, local chat, and group chat.
Install
Install from PyPI
python -m pip install -U cheapclaw
Install from source
cd /Users/chenglin/Desktop/research/claw_dev/cheapclaw
python -m pip install -U -e .
Quick Start
Option A: the normal first-time setup
cheapclaw config --interactive
cheapclaw up
Open the dashboard:
http://127.0.0.1:8787/dashboard
Option B: create a template first
cheapclaw init
cheapclaw config --interactive
cheapclaw up
cheapclaw init creates the default manifest template if it does not exist.
Default Paths
By default, CheapClaw stores runtime files under:
~/cheapclaw
The most important default paths are:
~/cheapclaw/fleet.manifest.json
~/cheapclaw/runtime
~/cheapclaw/runtime/config/llm_config.yaml
Most CLI commands use that default manifest automatically, so you usually do not need to pass --manifest.
If You Only Have One API Key and One Base URL
That is enough.
During cheapclaw config --interactive, fill:
llm.base_urlllm.api_keyllm.model
CheapClaw writes one shared LLM config file and all bots use it by default.
If your provider expects an openai/ model prefix, CheapClaw will add it automatically during interactive setup when appropriate.
Recommended First Run Flow
If this is your first deployment, the smoothest path is:
- Configure one
localwebbot first. - Start CheapClaw.
- Open the dashboard and confirm local web chat works.
- Add Telegram or Feishu only after localweb is stable.
This avoids debugging credentials, proxies, and channel permissions at the same time.
Dashboard
The built-in dashboard is available at:
http://127.0.0.1:8787/dashboard
From there you can:
- view all bots
- inspect running state
- edit fleet configuration
- use local web chat
- create multi-bot local group conversations
- inspect history
- operate CheapClaw without hand-editing runtime files
Exposing the dashboard on a server
If you want LAN or remote access:
cheapclaw up --web-host 0.0.0.0 --web-port 8787
Then open:
http://<server-ip>:8787/dashboard
Dashboard example
This screenshot shows the web console after installing an extra custom agent system by CLI, so the bot can orchestrate more than the built-in systems.
Adding Bots
You can add bots either from the dashboard or from the CLI.
Add a bot from the CLI
cheapclaw add-bot
The command is interactive and will ask for:
- bot id
- display name
- channel type
- credentials
- whether to start the bot immediately
Manage a single bot
cheapclaw start-bot --bot-id bot_1
cheapclaw stop-bot --bot-id bot_1
cheapclaw reload-bot --bot-id bot_1 --prepare-first
Inspect bots
cheapclaw list-bots
cheapclaw status
cheapclaw status --bot-id bot_1
cheapclaw logs --bot-id bot_1
Local Web Chat
localweb is the easiest channel because it needs no third-party credentials.
It is useful for:
- first-run verification
- demos
- local testing
- multi-bot group chat experiments
In local web group chats:
- you can include multiple localweb bots
@bot_idroutes the message to the mentioned bot- if a message mentions one or more bots, only the mentioned bots are triggered
Connecting Telegram
To add a Telegram bot, prepare:
- a BotFather bot token
- optional allowed chat ids if you want to restrict usage
During cheapclaw config --interactive or cheapclaw add-bot:
- choose channel
telegram - fill
telegram.bot_token - optionally fill
telegram.allowed_chats
Start the bot:
cheapclaw start-bot --bot-id telegram_bot_1 --prepare-first
If Telegram returns 404 on getUpdates, the token is invalid or malformed.
Connecting Feishu
To add a Feishu bot, prepare:
app_idapp_secret
During setup:
- choose channel
feishu - fill
feishu.app_id - fill
feishu.app_secret
CheapClaw uses Feishu long connection mode by default.
If your environment uses a SOCKS proxy, make sure the environment actually intends to use it. CheapClaw uses explicit proxy settings from its manifest-configured environment, and current releases ship with python-socks.
Other Channels
CheapClaw also has support for:
- Discord
- WhatsApp Cloud API
- QQ through OneBot v11 bridge
- WeChat through OneBot v11 bridge
For most users, it is still best to validate localweb, then Telegram or Feishu, before adding bridge-based channels.
Installing a Custom Agent System
CheapClaw can install a full agent system from a zip archive.
Install to one bot:
cheapclaw bot-agent-system add "/path/to/agent_system.zip" --bot-id bot_1
Install and reload immediately:
cheapclaw bot-agent-system add "/path/to/agent_system.zip" --bot-id bot_1 --reload-after
Install globally into shared project assets:
cheapclaw bot-agent-system add "/path/to/agent_system.zip" --global
Notes:
--bot-idinstalls only into that bot runtime--reload-afterrestarts the target bot so the new system is visible immediately- runtime-installed systems are preserved across normal prepare and reload flows
Common Commands
Main lifecycle
cheapclaw init
cheapclaw config --interactive
cheapclaw prepare
cheapclaw up
cheapclaw stop
cheapclaw restart
Per-bot control
cheapclaw add-bot
cheapclaw start-bot --bot-id bot_1
cheapclaw stop-bot --bot-id bot_1
cheapclaw reload-bot --bot-id bot_1 --prepare-first
Status and logs
cheapclaw list-bots
cheapclaw status
cheapclaw status --bot-id bot_1
cheapclaw logs --bot-id bot_1
Dashboard control
cheapclaw web-start
cheapclaw web-stop
cheapclaw web-status
Agent system management
cheapclaw bot-agent-system add "/path/to/agent_system.zip" --bot-id bot_1
cheapclaw bot-agent-system add "/path/to/agent_system.zip" --bot-id bot_1 --reload-after
cheapclaw bot-agent-system add "/path/to/agent_system.zip" --global
Cases
Mobile chat: Feishu + Telegram
The two screenshots below show CheapClaw connected to mobile chat surfaces.
| Feishu | Telegram |
|---|---|
This is a practical deployment pattern:
- keep orchestration on your server
- keep user interaction in familiar messaging apps
- let the supervisor decide when to reuse or branch work
Dashboard + expanding agent systems
This case shows a bot that started with built-in orchestration systems, then gained a third system after a CLI install.
Notes and Operational Advice
Watchdog defaults
CheapClaw now defaults to:
watchdog_interval_sec = 86400
That is 24 hours.
This keeps maintenance noise low by default. If you want a shorter interval, edit the bot runtime config after initialization:
~/cheapclaw/runtime/<bot_id>/cheapclaw/config/app_config.json
system-add.md
CheapClaw updates only its own reserved block inside system-add.md.
That means:
- you can keep your own short notes outside the reserved block
- an agent can also keep short preference or experience notes there
- CheapClaw will not replace the whole file
Stop before deleting runtime files
Always stop services first:
cheapclaw stop
Then edit or remove runtime files if you really need to.
Agent systems are runtime-visible, not auto-injected
CheapClaw only exposes the agent systems that actually exist in the current bot runtime.
That means:
- built-in
infiagentagent systems are not auto-injected into CheapClaw bots - a bot only sees the systems you explicitly prepared or installed for it
Start with localweb when something feels off
If a social channel is not responding, first verify:
- the dashboard is reachable
- a localweb bot can reply
- the shared LLM config is valid
Then move on to Telegram or Feishu credentials.
Repository Layout
assets/ built-in config, agent systems, screenshots
docs/ additional documentation
scripts/ CLI and dashboard startup logic
tools_library/ CheapClaw runtime tools
web/ dashboard frontend files
cheapclaw_service.py main service loop
README.md this guide
Extra Documentation
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cheapclaw-1.0.2.tar.gz.
File metadata
- Download URL: cheapclaw-1.0.2.tar.gz
- Upload date:
- Size: 145.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e37bcda5235fb818101c2676bac3413351c8d115e80afc07ddce6b450cb3aad1
|
|
| MD5 |
a10bb9abc02a027ce664a887cb366414
|
|
| BLAKE2b-256 |
0ac1eb2bb34debc7b4815353d8e62b5383d0784ef4fbcc5b65e4ce33cf2ab6b0
|
File details
Details for the file cheapclaw-1.0.2-py3-none-any.whl.
File metadata
- Download URL: cheapclaw-1.0.2-py3-none-any.whl
- Upload date:
- Size: 159.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae43bd84f8c104b28914235299492c9b94daa50c4cdf05e7fab83c8589c0d640
|
|
| MD5 |
f1fe6366799b87d89a82465b5a8ddd69
|
|
| BLAKE2b-256 |
f784ffae8b267af3391549aa6a3966b84b2829d88c1e6a3f52647e0fc6199cc7
|