Spaces:
Running
Running
File size: 15,978 Bytes
af9e60e f41cf76 af9e60e 8d60ff8 99951b4 46747b3 99951b4 46747b3 99951b4 46747b3 f2338a4 25b14fd d499109 af9e60e 7a0af95 8d60ff8 678f3be 7a0af95 8d60ff8 7a0af95 54a1af3 8d60ff8 678f3be 0f21014 25b14fd 7a0af95 e830544 8d60ff8 af9e60e b77e302 8d60ff8 b77e302 af9e60e 8d60ff8 af9e60e df1c00f af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 7552177 8d60ff8 af9e60e 8d60ff8 af9e60e 0defb22 a078088 0defb22 8d60ff8 af9e60e 8d60ff8 af9e60e 8d60ff8 f2338a4 678f3be af9e60e 54a1af3 d499109 af9e60e d14c9c6 678f3be d14c9c6 678f3be d14c9c6 678f3be d14c9c6 678f3be d14c9c6 f2338a4 d14c9c6 f2338a4 d14c9c6 f2338a4 7a0af95 54a1af3 7a0af95 54a1af3 d439036 8d60ff8 af9e60e d14c9c6 0f21014 d14c9c6 af9e60e 54a1af3 d14c9c6 af9e60e 73a87a7 8236b3f 25b14fd 0006b4a 7a0af95 54a1af3 de4ed0d 54a1af3 af9e60e 54a1af3 af9e60e 54a1af3 25b14fd af9e60e 8d60ff8 af9e60e d14c9c6 af9e60e d14c9c6 af9e60e d14c9c6 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 304ec00 41a90e2 304ec00 41a90e2 304ec00 41a90e2 f2338a4 304ec00 41a90e2 304ec00 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 7552177 f41cf76 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e 8d60ff8 af9e60e d14c9c6 8d60ff8 d14c9c6 8d60ff8 af9e60e 8d60ff8 0f21014 25b14fd 8d60ff8 e830544 0f21014 8d60ff8 7552177 af9e60e 44d94d1 9c56e36 44d94d1 25b14fd 44d94d1 af9e60e 8d60ff8 af9e60e 44d94d1 d14c9c6 44d94d1 d14c9c6 44d94d1 af9e60e 8d60ff8 af9e60e 8d60ff8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 | ---
title: HuggingClaw
emoji: π¦
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7861
pinned: true
license: mit
secrets:
- name: LLM_API_KEY
description: "Your LLM provider API key (e.g. Anthropic, OpenAI, Google, OpenRouter)."
- name: LLM_MODEL
description: "Model ID to use, e.g. google/gemini-2.5-flash or openai/gpt-4o."
- name: GATEWAY_TOKEN
description: "Strong token to secure your OpenClaw Control UI (generate: openssl rand -hex 32)."
- name: CLOUDFLARE_WORKERS_TOKEN
description: "Cloudflare API token β auto-creates a Worker proxy and KeepAlive monitor."
- name: TELEGRAM_ALLOWED_USERS
description: "Comma-separated Telegram user IDs for access"
- name: TELEGRAM_BOT_TOKEN
description: "Telegram bot token from BotFather"
---
<!-- Badges -->
[](https://github.com/somratpro/huggingclaw)
[](https://opensource.org/licenses/MIT)
[](https://huggingface.co/spaces)
[](https://github.com/openclaw/openclaw)
**Your always-on AI assistant β free, no server needed.** HuggingClaw runs [OpenClaw](https://openclaw.ai) on HuggingFace Spaces, giving you a 24/7 AI chat assistant on Telegram and WhatsApp. It works with *any* large language model (LLM) β Claude, ChatGPT, Gemini, etc. β and even supports custom models via [OpenRouter](https://openrouter.ai). Deploy in minutes on the free HF Spaces tier (2 vCPU, 16GB RAM, 50GB) with automatic workspace backup to a HuggingFace Dataset so your chat history and settings persist across restarts.
## Table of Contents
- [β¨ Features](#-features)
- [π₯ Video Tutorial](#-video-tutorial)
- [π Quick Start](#-quick-start)
- [π± Telegram Setup *(Optional)*](#-telegram-setup-optional)
- [π Cloudflare Proxy *(Optional)*](#-cloudflare-proxy-optional)
- [π¬ WhatsApp Setup *(Optional)*](#-whatsapp-setup-optional)
- [πΎ Workspace Backup *(Optional)*](#-workspace-backup-optional)
- [π Webhooks *(Optional)*](#-webhooks-optional)
- [π Security & Advanced *(Optional)*](#-security--advanced-optional)
- [π€ LLM Providers](#-llm-providers)
- [π» Local Development](#-local-development)
- [π CLI Access](#-cli-access)
- [ποΈ Architecture](#-architecture)
- [π Staying Alive](#-staying-alive)
- [π Troubleshooting](#-troubleshooting)
- [π Links](#-links)
- [π€ Contributing](#-contributing)
- [π License](#-license)
## β¨ Features
- π **Any LLM:** Use Claude, OpenAI GPT, Google Gemini, Grok, DeepSeek, Qwen, and 40+ providers (set `LLM_API_KEY` and `LLM_MODEL` accordingly).
- β‘ **Zero Config:** Duplicate this Space and set **just three** secrets (LLM_API_KEY, LLM_MODEL, GATEWAY_TOKEN) β no other setup needed.
- π³ **Fast Builds:** Uses a pre-built OpenClaw Docker image to deploy in minutes.
- π **Cloudflare Outbound Proxy:** HuggingClaw can automatically provision a Cloudflare Worker proxy for blocked outbound traffic such as Telegram API requests.
- πΎ **Workspace Backup:** Chats, settings, and WhatsApp session state sync to a private HF Dataset via the `huggingface_hub`, preserving data automatically without storing your HF token in a git remote.
- β° **Easy Keep-Alive:** Uses `CLOUDFLARE_WORKERS_TOKEN` to automatically set up a cron-triggered keep-awake worker at boot.
- π₯ **Multi-User Messaging:** Support for Telegram (multi-user) and WhatsApp (pairing).
- π **Visual Dashboard:** Beautiful Web UI to monitor uptime, sync status, and active models.
- π **Webhooks:** Get notified on restarts or backup failures via standard webhooks.
- π **Flexible Auth:** Secure the Control UI with either a gateway token or password.
- π **100% HF-Native:** Runs entirely on HuggingFaceβs free infrastructure (2 vCPU, 16GB RAM).
## π₯ Video Tutorial
Watch a quick walkthrough on YouTube: [Deploying HuggingClaw on HF Spaces](https://www.youtube.com/watch?v=S6pl7NmjX7g&t=73s).
## π Quick Start
### Step 1: Duplicate this Space
[](https://huggingface.co/spaces/somratpro/HuggingClaw?duplicate=true)
Click the button above to duplicate the template.
### Step 2: Add Your Secrets
Navigate to your new Space's **Settings**, scroll down to the **Variables and secrets** section, and add the following three under **Secrets**:
- `LLM_API_KEY` β Your provider API key (e.g., Anthropic, OpenAI, OpenRouter).
- `LLM_MODEL` β The model ID string you wish to use (e.g., `openai/gpt-4o` or `google/gemini-2.5-flash`).
- `GATEWAY_TOKEN` β A custom password or token to secure your Control UI. *(You can use any strong password, or generate one with `openssl rand -hex 32` if you prefer).*
> [!TIP]
> HuggingClaw is completely flexible! You only need these three secrets to get started. You can set other secrets later.
Optional: if you want to pin a specific OpenClaw release instead of `latest`, add `OPENCLAW_VERSION` under **Variables** in your Space settings. For Docker Spaces, HF passes Variables as build args during image build, so this should be a Variable, not a Secret.
### Step 3: Deploy & Run
That's it! The Space will build the container and start up automatically. You can monitor the build process in the **Logs** tab.
### Step 4: Monitor & Manage
HuggingClaw features a built-in dashboard to track:
- **Uptime:** Real-time uptime monitoring.
- **Sync Status:** Visual indicators for workspace backup operations.
- **Chat Status:** Real-time connection status for WhatsApp and Telegram.
- **Model Info:** See which LLM is currently powering your assistant.
## π± Telegram Setup *(Optional)*
To chat via Telegram:
1. Create a bot via [@BotFather](https://t.me/BotFather): send `/newbot`, follow prompts, and copy the bot token.
2. Find your Telegram user ID with [@userinfobot](https://t.me/userinfobot).
3. Add `CLOUDFLARE_WORKERS_TOKEN` in Space secrets to let HuggingClaw auto-provision the outbound proxy, or set `CLOUDFLARE_PROXY_URL` manually if you already have a Worker.
4. Add these secrets in Settings β Secrets. After restarting, the bot should appear online on Telegram.
| Variable | Default | Description |
| :--- | :--- | :--- |
| `TELEGRAM_BOT_TOKEN` | β | Telegram bot token from BotFather |
| `TELEGRAM_ALLOWED_USERS` | β | Comma-separated Telegram user IDs for access |
## π Cloudflare Proxy Setup
Hugging Face Free Tier often restricts outbound connections to services like Telegram, Discord, and WhatsApp. HuggingClaw solves this with a **Transparent Outbound Proxy** via Cloudflare Workers.
### β‘ Automatic Setup (Recommended)
This is the easiest way. HuggingClaw will handle the deployment for you.
1. Create a **Cloudflare API Token**:
- Go to [API Tokens](https://dash.cloudflare.com/profile/api-tokens).
- Create Token -> **Edit Cloudflare Workers** template.
- Ensure it has `Account: Workers Scripts: Edit` permissions.
2. Add the token as a secret named `CLOUDFLARE_WORKERS_TOKEN` in your Space Settings.
**What happens next?**
- HuggingClaw automatically creates a Worker named after your Space host.
- It generates a secure, private `CLOUDFLARE_PROXY_SECRET`.
- All restricted outbound traffic is automatically routed through this Worker.
## π¬ WhatsApp Setup *(Optional)*
To use WhatsApp, enable the channel and scan the QR code from the Control UI (**Channels** β **WhatsApp** β **Login**):
| Variable | Default | Description |
| :--- | :--- | :--- |
| `WHATSAPP_ENABLED` | `false` | Enable WhatsApp pairing support |
## πΎ Workspace Backup *(Optional)*
HuggingClaw automatically syncs your workspace (chats, settings, sessions) to a private HF Dataset named `huggingclaw-backup`.
- **Persistence:** Survived restarts and restores your state on boot.
- **WhatsApp:** Stores session credentials so you don't have to scan the QR code every time.
- **Interval:** Syncs every 3 minutes by default.
| Variable | Default | Description |
| :--- | :--- | :--- |
| `HF_TOKEN` | β | HF token with **Write** access |
| `SYNC_INTERVAL` | `180` | Backup frequency in seconds |
## π Staying Alive *(Recommended on Free HF Spaces)*
Your Space will automatically be kept awake by a background Cloudflare Worker when you configure the `CLOUDFLARE_WORKERS_TOKEN` secret. The worker uses a cron trigger to regularly ping your Space's `/health` endpoint. The dashboard displays the current keep-alive worker status.
## π Webhooks *(Optional)*
Get notified when your Space restarts or if a backup fails:
| Variable | Default | Description |
| :--- | :--- | :--- |
| `WEBHOOK_URL` | β | Endpoint URL for POST JSON notifications |
## π Security & Advanced *(Optional)*
Configure password access and network restrictions:
| Variable | Default | Description |
| :--- | :--- | :--- |
| `OPENCLAW_PASSWORD` | β | Enable simple password auth instead of token |
| `TRUSTED_PROXIES` | β | Comma-separated IPs of HF proxies |
| `ALLOWED_ORIGINS` | β | Comma-separated allowed origins for Control UI |
| `CLOUDFLARE_KEEPALIVE_ENABLED` | `true` | Set to `false` to disable the automatic Cloudflare KeepAlive worker |
## π€ LLM Providers
HuggingClaw supports **all providers** from OpenClaw. Set `LLM_MODEL=<provider/model>` and the provider is auto-detected.
<details>
<summary><b>Click to see supported providers and examples</b></summary>
| Provider | Prefix | Example Model |
| :--- | :--- | :--- |
| **Anthropic** | `anthropic/` | `anthropic/claude-3-5-sonnet-latest` |
| **OpenAI** | `openai/` | `openai/gpt-4o` |
| **Google** | `google/` | `google/gemini-2.0-flash` |
| **DeepSeek** | `deepseek/` | `deepseek/deepseek-chat` |
| **xAI (Grok)** | `xai/` | `xai/grok-2-latest` |
| **Mistral** | `mistral/` | `mistral/mistral-large-latest` |
| **HuggingFace** | `huggingface/` | `huggingface/deepseek-ai/DeepSeek-R1` |
| **OpenRouter** | `openrouter/` | `openrouter/anthropic/claude-3.5-sonnet` |
*And many more: Cohere, Groq, NVIDIA, Mistral, Moonshot, etc.*
</details>
### Any Other Provider
You can also use any custom provider:
```bash
LLM_API_KEY=your_api_key
LLM_MODEL=provider/model-name
```
The provider prefix in `LLM_MODEL` tells HuggingClaw how to call it. See [OpenClaw Model Providers](https://docs.openclaw.ai/concepts/model-providers) for the full list.
### Custom OpenAI-Compatible Provider
Register a custom endpoint at startup without modifying the CLI.
| Variable | Description | Default |
| :--- | :--- | :--- |
| `CUSTOM_PROVIDER_NAME` | Unique provider prefix (e.g., `modal`) | **Required** |
| `CUSTOM_BASE_URL` | API base URL (e.g., `https://.../v1`) | **Required** |
| `CUSTOM_MODEL_ID` | Model ID on the server | **Required** |
| `LLM_MODEL` | Must match `{CUSTOM_PROVIDER_NAME}/{CUSTOM_MODEL_ID}` | **Required** |
| `CUSTOM_API_KEY` | Provider-specific key | `LLM_API_KEY` |
| `CUSTOM_CONTEXT_WINDOW` | Context limit | `128000` |
> [!TIP]
> `CUSTOM_PROVIDER_NAME` cannot override built-in providers (openai, anthropic, etc.).
**Example (Modal):**
```bash
CUSTOM_PROVIDER_NAME=modal
CUSTOM_BASE_URL=https://api.us-west-2.modal.direct/v1
CUSTOM_MODEL_ID=zai-org/GLM-5.1-FP8
LLM_MODEL=modal/zai-org/GLM-5.1-FP8
```
## π» Local Development
```bash
git clone https://github.com/somratpro/huggingclaw.git
cd huggingclaw
cp .env.example .env
# Edit .env with your secret values
```
**With Docker:**
```bash
docker build --build-arg OPENCLAW_VERSION=latest -t huggingclaw .
docker run -p 7861:7861 --env-file .env huggingclaw
```
**Without Docker:**
```bash
npm install -g openclaw@latest
export $(cat .env | xargs)
bash start.sh
```
## π CLI Access
After deploying, you can connect via the OpenClaw CLI (e.g., to onboard channels or run agents):
```bash
npm install -g openclaw@latest
openclaw channels login --gateway https://YOUR_SPACE_NAME.hf.space
# When prompted, enter your GATEWAY_TOKEN
```
## ποΈ Architecture
HuggingClaw uses a multi-layered approach to ensure stability and persistence on Hugging Face's ephemeral infrastructure.
<details>
<summary><b>Click to view technical details</b></summary>
- **Dashboard (`/`)**: Management, monitoring, and keep-alive tools.
- **Control UI (`/gateway`)**: Secure interface for managing agents and channels.
- **Health Check (`/health`)**: Endpoint for uptime monitoring and readiness probes.
- **Sync Engine**: Python background process managing HF Dataset persistence.
- **Transparent Proxy**: Interceptor for requests to blocked domains (Telegram, etc.).
**Startup sequence:**
1. Validate required secrets and check HF token.
2. Resolve backup namespace and restore workspace from HF Dataset.
3. Generate `openclaw.json` configuration.
4. Launch background tasks (auto-sync, channel helpers).
5. Start OpenClaw gateway and listen for connections.
</details>
## π Troubleshooting
- **Missing secrets:** Ensure `LLM_API_KEY`, `LLM_MODEL`, and `GATEWAY_TOKEN` are set in your Space **Settings β Secrets**.
- **Telegram bot issues:** Verify your `TELEGRAM_BOT_TOKEN`. Check Space logs for lines like `π± Enabling Telegram`.
- **Backup restore failing:** Make sure `HF_TOKEN` is valid and has write access to your HF account dataset. Set `HF_USERNAME` only if auto-detection is not available in your environment.
- **Space keeps sleeping:** Add `CLOUDFLARE_WORKERS_TOKEN` as a Space secret to enable automatic keep-awake monitoring via Cloudflare Workers.
- **Auth errors / proxy:** If you see reverse-proxy auth errors, add the logged IPs under `TRUSTED_PROXIES` (from logs `remote=x.x.x.x`).
- **Control UI says too many failed authentication attempts:** Wait for the retry window to expire, then open the Space in an incognito window or clear site storage for your Space before logging in again with `GATEWAY_TOKEN`.
- **WhatsApp lost its session after restart:** Make sure `HF_TOKEN` is configured so the hidden session backup can be restored on boot.
- **UI blocked (CORS):** Set `ALLOWED_ORIGINS=https://your-space-name.hf.space`.
- **Version mismatches:** Pin a specific OpenClaw build with the `OPENCLAW_VERSION` Variable in HF Spaces, or `--build-arg OPENCLAW_VERSION=...` locally.
## π More Projects
Similar projects by [@somratpro](https://github.com/somratpro) β all free, one-click deploy on HF Spaces:
| Project | What it runs | HF Space | GitHub |
| :--- | :--- | :--- | :--- |
| **HuggingMes** | Hermes β Self-hosted agent gateway | [Space](https://huggingface.co/spaces/somratpro/HuggingMes) | [Repo](https://github.com/somratpro/huggingmes) |
| **Hugging8n** | n8n β workflow & automation platform | [Space](https://huggingface.co/spaces/somratpro/Hugging8n) | [Repo](https://github.com/somratpro/hugging8n) |
| **HuggingClip** | Paperclip β AI agent orchestration platform | [Space](https://huggingface.co/spaces/somratpro/HuggingClip) | [Repo](https://github.com/somratpro/huggingclip) |
## π Links
- [OpenClaw Docs](https://docs.openclaw.ai)
- [OpenClaw GitHub](https://github.com/openclaw/openclaw)
- [HuggingFace Spaces Docs](https://huggingface.co/docs/hub/spaces)
## β€οΈ Support
If HuggingClaw saves you time, consider buying me a coffee to keep the projects alive!
**USDT (TRC-20 / TRON network only)**
```
TELx8TJz1W1h7n6SgpgGNNGZXpJCEUZrdB
```
> [!WARNING]
> Send **USDT on TRC-20 network only**. Sending other tokens or using a different network will result in permanent loss.
## π€ Contributing
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
## π License
MIT β see [LICENSE](LICENSE) for details.
*Made with β€οΈ by [@somratpro](https://github.com/somratpro) for the OpenClaw community.*
|