CheetahClaws: 一个快速易用的代理架构,可为长期目标、多模型和使用工具的 AI 系统提供支持
English | 中文 | 한국어 | 日本語 | Français | Deutsch | Español | Português
pip install cheetahclaws
Then just run (e.g., using deepseek-v4-flash model):
cheetahclaws # start chatting!
Other install methods: one-line install script | install from source | uv install | run from source install | full install details | docker install
️ Prefer a native app? A desktop build (Electron) wraps the full chat UI in a window — no terminal needed. See
desktop/.
auto mode asks only when an action can change your files, run arbitrary code, or reach outside the session. Auto-approved now: every registry-marked read-only tool (18 more than before — diagnostics, task/memory queries, document readers), read-only shell pipelines (git log | head -20, ls -la | grep test — the old check rejected every |), session-state tools (tasks/memories/skills), and creating a new file inside the workspace. Still asks: overwrites, writes outside the workspace, .git/hooks and .github/workflows paths, interpreters and test/build runners, anything that deletes or uploads, and sub-agent spawns. The prompt also gained s — approve and stop asking for that one command or file for the session, a scoped alternative to accept-all (/permissions clear drops grants). The shell check is now a real parser instead of a prefix match, which along the way closed a hole where anything starting with python /node /find auto-ran. Details/model openrouter// (e.g. openrouter/deepseek/deepseek-v4-flash) routes through OpenRouter; the key comes from OPENROUTER_API_KEY or /config openrouter_api_key=sk-or-..., and the model shows up in the /model Tab picker and the Web UI picker automatically. Append @[/] — openrouter/deepseek/deepseek-v4-flash@gmicloud/fp8 — to pin which upstream serves the request; it is sent as OpenRouter's provider request-body object, so the model field stays a real catalog ID. Shipped alongside four routing fixes that gateway model IDs exposed: the provider is no longer re-derived from an already-stripped model string (which read openrouter/deepseek/… as the DeepSeek API and leaked DeepSeek-only request fields), cost estimates and context windows now resolve per model instead of defaulting to $0.00 and a flat 128k, and the @… routing suffix no longer strips a model of its prompt-family overlay. Details/config input_suggest=false or CHEETAH_SUGGEST=0. Also in this release: the terminal tab title now configures itself over Remote-SSH / WSL / devcontainers — it used to write a settings file on the server that the editor never reads, and never retry; it now targets the remote Machine settings the window actually reads. First tagged release carrying the July 11 tab-title / prompt-cache and July 20 tool_profile / bounded-I/O changes. Detailstool_profile selects how many tool schemas are sent each turn — full (default, nothing hidden) / standard (compact coding) / research / orchestration — to cut prompt tokens on small-context models, switchable with /config tool_profile=standard. Also fixes two bounded-I/O regressions: SummarizeLargeFile no longer "summarizes" its own chunk-failure markers (clean Error when map/reduce fails), and the DuckDuckGo parser no longer crashes on a valueless class attribute. Detailsprompt_toolkit is a core dependency (no [autosuggest] extra needed, so pip install / uv tool install both get it out of the box); /model gained a Tab-completion picker (provider/model + a two-level LiteLLM tree, PR #166); and sessions now autosave every turn (atomic write + fsync) so a crash or power-loss mid-conversation stays recoverable via /resume — the loud daily/history save still happens once on exit. Detailsdocker pull chauncygu/cheetahclaws) so you can run the Web UI without cloning; fixes a first-run PermissionError by pre-creating the .cheetahclaws/workspace dirs owned by the non-root user, makes the compose image overridable via CHEETAH_IMAGE, and adds scripts/docker-publish.sh (auto-reads the version, multi/single-arch). New docs sections: Pull from Docker Hub and Interactive setup / CLI mode. Details/workspace command manages isolated working directories under ~/.cheetahclaws/workspaces (list/switch/default/create/delete) (PR #162); startup auto-switching is opt-in via workspace_auto (off by default, so launching in a project directory is unchanged), and default is now a sticky key separate from last-used. Details/image now enriches the prompt with local OCR text so even non-vision models can act on clipboard screenshots (error dumps, code, tables); runs only when pytesseract/tesseract are installed and is fully opt-out via CHEETAHCLAWS_IMAGE_OCR=0. DetailsFor more news, see here.
CheetahClaws: A Fast and Easy-to-Use Python native Agent Harness Infrastructure, Supporting Any Model, such as Claude, GPT, Gemini, Kimi, Qwen, Zhipu, DeepSeek, MiniMax, and local open-source models via Ollama or any OpenAI-compatible endpoint.
More animated demos (code review,
/research,/brainstorm,/lab, Telegram/WeChat/Slack bridges) live indocs/media/.
Claude Code is a powerful, production-grade AI coding assistant — but its source is a compiled ~12 MB TypeScript/Node bundle (~1,300 files, ~283K lines), tightly coupled to the Anthropic API, hard to modify, and impossible to run against a local or alternative model.
CheetahClaws reimplements the same core loop in ~90K lines of readable Python — keeping what you need, dropping what you don't, and adding multi-provider + local-model support. Full comparison: docs/guides/comparison.md.
| Dimension | Claude Code (TypeScript) | CheetahClaws (Python) |
|---|---|---|
| Language | TypeScript + React/Ink | Python 3.8+ |
| Source files / LoC | ~1,332 files / ~283K | ~315 files / ~90K (core; ~127K with tests) |
| Built-in tools / commands | 44+ / 88 | 27 / 50+ |
| Model providers | Anthropic only | 8+ (Anthropic · OpenAI · Gemini · Kimi · Qwen · DeepSeek · MiniMax · …) |
| Local models | No | Yes — Ollama, LM Studio, vLLM, any OpenAI-compatible endpoint |
| Build step | Yes (Bun + esbuild) | No — python cheetahclaws.py |
| Extensibility | Closed (compile-time) | Open — register_tool() at runtime, Markdown skills, git plugins, MCP |
| Voice input | Proprietary WebSocket (OAuth) | Local Whisper / OpenAI — works offline |
Where Claude Code wins: richer React/Ink UI, more built-in tools, enterprise features (MDM, team permission sync, OAuth/keychain), AI-driven memory extraction, single-binary production reliability.
Where CheetahClaws wins: any-model switching (--model//model, no recompile) incl. full local/offline support; a readable agent loop in one file (agent.py, ~740 lines); zero build; runtime tool registration + MCP + git plugins + Markdown skills; task dependency graph (blocks/blocked_by); two-layer context compression; offline voice; cloud session sync; bridges to Telegram/WeChat/Slack/QQ.
Who it's for: developers who want a local/non-Anthropic coding assistant, researchers studying how agentic assistants work, and teams who need a hackable baseline — without a Node.js build chain.
OpenClaw is another popular open-source assistant (TypeScript/Node). The two have different primary goals — OpenClaw is a personal life-assistant across messaging channels; CheetahClaws is a developer/coding tool.
| Dimension | OpenClaw (TypeScript) | CheetahClaws (Python) |
|---|---|---|
| Lines of code | ~245K (~10,349 files) | ~90K core (~315 files) |
| Primary focus | Personal assistant across channels | AI coding assistant / dev tool |
| Architecture | Always-on Gateway daemon + apps | Zero-install terminal REPL |
| Messaging channels | 20+ (WhatsApp · Signal · iMessage · Discord · Matrix · …) | Terminal + Telegram · WeChat · Slack · QQ bridges |
| Local / offline models | Limited | Full — Ollama · vLLM · LM Studio · any OpenAI-compatible |
| Code editing tools | Browser control, Canvas | Read · Write · Edit · Bash · Glob · Grep · NotebookEdit · GetDiagnostics |
| Mobile / Live Canvas | Yes (menu bar + iOS/Android, A2UI) | — |
| MCP support | — | Yes (stdio/SSE/HTTP) |
| Hackability | 245K lines, harder to modify | ~90K lines — agent loop in one file |
| If you want… | Use |
|---|---|
| A personal assistant on WhatsApp/Signal/Discord, mobile-first, browser automation + Canvas | OpenClaw |
| An AI coding assistant in your terminal, full offline/local models, multi-provider switching, source you can read in an afternoon | CheetahClaws |
Full comparison — both sides' wins + key design differences (agent loop, tool registration, context compression, memory): docs/guides/comparison.md.
| Feature | Details |
|---|---|
| Multi-provider | Anthropic · OpenAI · Gemini · Kimi · Qwen · Zhipu · DeepSeek · MiniMax · OpenRouter · Ollama · LM Studio · Custom endpoint |
| Agent loop | Streaming API + automatic tool-use loop; the whole loop is in agent.py |
| 28 built-in tools | Read · Write · Edit · Bash · Glob · |
暂无开放 Issues,或尚未同步最近议题。