$npx -y skills add hummingbot/skills --skill hummingbot-heartbeatOpenClaw cron job that delivers hourly Hummingbot status updates to your chat — API health, Gateway container, active bots/controllers, executors, and portfolio balances.
| 1 | # hummingbot-heartbeat |
| 2 | |
| 3 | An OpenClaw cron skill that runs every hour and delivers a formatted Hummingbot status report to your connected chat channel (Telegram, Discord, etc.). Covers API health, Gateway container, active bots/controllers, executors, and portfolio balances. |
| 4 | |
| 5 | ## Installation |
| 6 | |
| 7 | ```bash |
| 8 | clawhub install hummingbot-heartbeat |
| 9 | ``` |
| 10 | |
| 11 | Or manually clone into your skills directory. |
| 12 | |
| 13 | ## Quick Start |
| 14 | |
| 15 | ### 1. Set up the OpenClaw cron job |
| 16 | |
| 17 | Ask your OpenClaw agent: |
| 18 | |
| 19 | > "Set up the hummingbot-heartbeat cron job" |
| 20 | |
| 21 | The agent will resolve the skill path and register it with `openclaw cron`. Or do it manually: |
| 22 | |
| 23 | ```bash |
| 24 | # Replace <SKILL_PATH> with the actual installed path |
| 25 | openclaw cron add \ |
| 26 | --name "hummingbot-heartbeat" \ |
| 27 | --description "Hourly Hummingbot status check" \ |
| 28 | --every 1h \ |
| 29 | --announce \ |
| 30 | --channel telegram \ |
| 31 | --message "Run this and send output verbatim: python3 <SKILL_PATH>/scripts/bot_status.py" |
| 32 | ``` |
| 33 | |
| 34 | ### 2. Run manually (debug) |
| 35 | |
| 36 | ```bash |
| 37 | python3 scripts/bot_status.py |
| 38 | python3 scripts/bot_status.py --json |
| 39 | ``` |
| 40 | |
| 41 | ## Configuration |
| 42 | |
| 43 | Set via environment variables or a `.env` file in the skill directory: |
| 44 | |
| 45 | ```bash |
| 46 | # .env (optional — defaults shown) |
| 47 | HUMMINGBOT_API_URL=http://localhost:8000 |
| 48 | API_USER=admin |
| 49 | API_PASS=admin |
| 50 | ``` |
| 51 | |
| 52 | | Variable | Default | Description | |
| 53 | |----------|---------|-------------| |
| 54 | | `HUMMINGBOT_API_URL` | `http://localhost:8000` | Hummingbot API base URL | |
| 55 | | `API_USER` | `admin` | API username | |
| 56 | | `API_PASS` | `admin` | API password | |
| 57 | |
| 58 | ## Requirements |
| 59 | |
| 60 | - Python 3.9+ |
| 61 | - Hummingbot API running (see `hummingbot-deploy` skill) |
| 62 | - Docker (optional — Gateway status check skipped if Docker unavailable) |
| 63 | |
| 64 | ## Sample Output |
| 65 | |
| 66 | ``` |
| 67 | 🤖 Hummingbot Status — Feb 28, 2026 09:06 AM |
| 68 | |
| 69 | **Infrastructure** |
| 70 | API: ✅ Up (v1.0.1) |
| 71 | Gateway: ✅ Up 17 hours |
| 72 | |
| 73 | **Active Bots:** none |
| 74 | |
| 75 | **Active Executors:** none |
| 76 | |
| 77 | **Portfolio** (total: $187.23) |
| 78 | Token Units Price Value |
| 79 | ------------ ----------- ---------- ---------- |
| 80 | SOL 2.0639 $81.4996 $168.20 |
| 81 | USDC 19.0286 $1.0000 $19.03 |
| 82 | ``` |
| 83 | |
| 84 | ## What It Checks |
| 85 | |
| 86 | | Check | Endpoint | Notes | |
| 87 | |-------|----------|-------| |
| 88 | | API health | `GET /` | Returns version | |
| 89 | | Gateway | `docker ps \| grep gateway` | Skipped if Docker unavailable | |
| 90 | | Active bots | `GET /bot-orchestration/status` | Lists controller configs | |
| 91 | | Active executors | `POST /executors/search` | Filters out CLOSED/FAILED | |
| 92 | | Portfolio | `POST /portfolio/history` | Latest balances with prices | |