Autonomous doctor and personal trainer for OpenClaw agents
Project description
EasyClaw
Autonomous doctor and personal trainer for OpenClaw agents.
EasyClaw is a lightweight sidecar daemon that monitors, diagnoses, self-heals, and optimizes OpenClaw instances — without user intervention. It runs alongside your OpenClaw agent and keeps it healthy 24/7.
Features
- Auto-Discovery — detects your OpenClaw installation, config, logs, and running process automatically
- Log Monitoring — tails OpenClaw logs in real-time, classifies errors against 13 built-in patterns
- Self-Healing — 11 built-in remediations for common failures (OOM, crashes, stale locks, DNS, rate limits)
- AI Agent Brain — LLM-powered reasoning via OpenRouter (GLM-4.7-Flash) with tool calling for complex diagnostics
- Circuit Breaker — prevents restart loops with configurable thresholds
- MCP Knowledge Base — queries a cloud knowledge hub with 29+ articles, 20+ model profiles, and diagnostic patterns
- Telegram Bot — two-way conversational interface with
/status,/logs,/statscommands and CRITICAL alert forwarding - KPI Tracking — MTTR, uptime %, auto-fix rate, intervention rate with persistent snapshots
- Status Dashboard — local HTTP endpoint (
localhost:18790) for health data - Resource Capping — enforces 10% CPU / 256MB RAM budget via systemd or nice values
- Security Sandbox — validates all commands before execution, blocks dangerous operations
Install
curl -sL easyclaw.help/install | bash
Or via pip:
pip install easyclaw
Or Docker:
docker run -d \
--name easyclaw \
-v ~/.openclaw:/host/.openclaw:ro \
-v /tmp/openclaw:/host/tmp/openclaw:ro \
-v ~/.easyclaw:/home/easyclaw/.easyclaw \
easyclaw/easyclaw:latest
Quick Start
# Run diagnostics first
easyclaw doctor
# Start the daemon (foreground for first run)
easyclaw start -f
# Or background
easyclaw start
# Check status
easyclaw status
# Stop
easyclaw stop
Configuration
EasyClaw stores its config at ~/.easyclaw/config.yaml. Key settings:
# Core
heartbeat_interval: 30 # seconds
health_check_interval: 60 # seconds
log_retention_days: 7
max_restart_attempts: 3 # circuit breaker
restart_window: 600 # circuit breaker window (10 min)
gateway_port: 18789
# Alerts
alert_webhook: null # n8n/Telegram/Slack webhook URL
# MCP Knowledge Base
mcp_endpoint: null # e.g., http://your-server:8002
mcp_token: null # subscription token
# AI Agent Brain
openrouter_api_key: null # enables LLM-powered reasoning
openrouter_model: "z-ai/glm-4.7-flash"
agent_enabled: true
# Telegram Bot
telegram_bot_token: null # from @BotFather
telegram_chat_ids: [] # authorized chat IDs
telegram_alert_severity: "CRITICAL"
Architecture
EasyClaw runs as an asyncio daemon with 16 concurrent subsystems:
Log Tailing ──> Classifier ──> Alert Pipeline ──> Webhook/Telegram
│
▼
Agent Brain (LLM) ──> MCP Knowledge Base
│
▼
Healer (fallback: rules-based)
│
▼
Executor ──> Sandbox ──> Shell Commands
│
▼
Fix Ledger ──> Circuit Breaker
The agent brain activates on events (not continuously), with a 10-second batch window and 30-second cooldown. Typical cost: <$0.02/day. If no API key is configured or OpenRouter is down, it falls back to the rules-based healer automatically.
Requirements
- Python 3.10+
- Linux, macOS, or WSL2
- OpenClaw installed (runs in standby mode without it)
License
Proprietary. See easyclaw.help for subscription details.
Project details
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 easyclaw-0.1.2.tar.gz.
File metadata
- Download URL: easyclaw-0.1.2.tar.gz
- Upload date:
- Size: 161.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fca0cc7ad0f18f2293883e9eee8d8ed22e47d644c5dff0308af134123e1480f0
|
|
| MD5 |
4281f776738af7217dbe94270dc1ac65
|
|
| BLAKE2b-256 |
e109b421170248b652a5201307b842b6be67a0d7340476ca94d6d3f6619c8bf6
|
Provenance
The following attestation bundles were made for easyclaw-0.1.2.tar.gz:
Publisher:
publish.yml on slickrick74/easyclaw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
easyclaw-0.1.2.tar.gz -
Subject digest:
fca0cc7ad0f18f2293883e9eee8d8ed22e47d644c5dff0308af134123e1480f0 - Sigstore transparency entry: 1215982510
- Sigstore integration time:
-
Permalink:
slickrick74/easyclaw@d3d0304a16089e8278b9c07a80e7c090d61e73ed -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/slickrick74
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d3d0304a16089e8278b9c07a80e7c090d61e73ed -
Trigger Event:
release
-
Statement type:
File details
Details for the file easyclaw-0.1.2-py3-none-any.whl.
File metadata
- Download URL: easyclaw-0.1.2-py3-none-any.whl
- Upload date:
- Size: 85.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e72f61520f1ab08369b551d761d39c3d27a55999c3092a4960088c9ac5662b54
|
|
| MD5 |
e183e8f5e3ec569cad20dd94953c4d86
|
|
| BLAKE2b-256 |
01191a0da8edcd6c8a7569557a04c5734dbac9401d667416a3b0b1d495fbc943
|
Provenance
The following attestation bundles were made for easyclaw-0.1.2-py3-none-any.whl:
Publisher:
publish.yml on slickrick74/easyclaw
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
easyclaw-0.1.2-py3-none-any.whl -
Subject digest:
e72f61520f1ab08369b551d761d39c3d27a55999c3092a4960088c9ac5662b54 - Sigstore transparency entry: 1215982552
- Sigstore integration time:
-
Permalink:
slickrick74/easyclaw@d3d0304a16089e8278b9c07a80e7c090d61e73ed -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/slickrick74
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d3d0304a16089e8278b9c07a80e7c090d61e73ed -
Trigger Event:
release
-
Statement type: