Upload folder using huggingface_hub
Browse files- Dockerfile +1 -1
- README.md +193 -4
- scripts/GROQ_SETUP.md +331 -0
- scripts/XAI_GROK_SETUP.md +220 -0
- scripts/sync_hf.py +52 -2
Dockerfile
CHANGED
|
@@ -6,7 +6,7 @@ SHELL ["/bin/bash", "-c"]
|
|
| 6 |
# ββ Layer 1 (root): η³»η»δΎθ΅ + Ollama + ε·₯ε
·οΌε
¨ι¨εεΉΆδΈΊδΈε±οΌβββββββββββββββββ
|
| 7 |
RUN echo "[build][layer1] System deps + Ollama..." && START=$(date +%s) \
|
| 8 |
&& apt-get update \
|
| 9 |
-
&& apt-get install -y --no-install-recommends git ca-certificates curl python3 python3-pip patch
|
| 10 |
&& rm -rf /var/lib/apt/lists/* \
|
| 11 |
&& pip3 install --no-cache-dir --break-system-packages huggingface_hub \
|
| 12 |
&& curl -fsSL https://ollama.com/install.sh | sh \
|
|
|
|
| 6 |
# ββ Layer 1 (root): η³»η»δΎθ΅ + Ollama + ε·₯ε
·οΌε
¨ι¨εεΉΆδΈΊδΈε±οΌβββββββββββββββββ
|
| 7 |
RUN echo "[build][layer1] System deps + Ollama..." && START=$(date +%s) \
|
| 8 |
&& apt-get update \
|
| 9 |
+
&& apt-get install -y --no-install-recommends git ca-certificates curl python3 python3-pip patch \
|
| 10 |
&& rm -rf /var/lib/apt/lists/* \
|
| 11 |
&& pip3 install --no-cache-dir --break-system-packages huggingface_hub \
|
| 12 |
&& curl -fsSL https://ollama.com/install.sh | sh \
|
README.md
CHANGED
|
@@ -1,10 +1,199 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
colorTo: red
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: HuggingClaw
|
| 3 |
+
emoji: π₯
|
| 4 |
+
colorFrom: yellow
|
| 5 |
colorTo: red
|
| 6 |
sdk: docker
|
| 7 |
pinned: false
|
| 8 |
+
license: mit
|
| 9 |
+
datasets:
|
| 10 |
+
- tao-shen/HuggingClaw-data
|
| 11 |
+
short_description: Free always-on AI assistant, no hardware required
|
| 12 |
+
app_port: 7860
|
| 13 |
+
tags:
|
| 14 |
+
- huggingface
|
| 15 |
+
- openrouter
|
| 16 |
+
- chatbot
|
| 17 |
+
- llm
|
| 18 |
+
- openclaw
|
| 19 |
+
- ai-assistant
|
| 20 |
+
- whatsapp
|
| 21 |
+
- telegram
|
| 22 |
+
- text-generation
|
| 23 |
+
- openai-api
|
| 24 |
+
- huggingface-spaces
|
| 25 |
+
- docker
|
| 26 |
+
- deployment
|
| 27 |
+
- persistent-storage
|
| 28 |
+
- agents
|
| 29 |
+
- multi-channel
|
| 30 |
+
- openai-compatible
|
| 31 |
+
- free-tier
|
| 32 |
+
- one-click-deploy
|
| 33 |
+
- self-hosted
|
| 34 |
+
- messaging-bot
|
| 35 |
---
|
| 36 |
|
| 37 |
+
<div align="center">
|
| 38 |
+
<img src="HuggingClaw.png" alt="HuggingClaw" width="720"/>
|
| 39 |
+
<br/><br/>
|
| 40 |
+
<strong>Your always-on AI assistant β free, no server needed</strong>
|
| 41 |
+
<br/>
|
| 42 |
+
<sub>WhatsApp Β· Telegram Β· 40+ channels Β· 16 GB RAM Β· One-click deploy Β· Auto-persistent</sub>
|
| 43 |
+
<br/><br/>
|
| 44 |
+
|
| 45 |
+
[](LICENSE)
|
| 46 |
+
[](https://huggingface.co)
|
| 47 |
+
[](https://huggingface.co/spaces/tao-shen/HuggingClaw)
|
| 48 |
+
[](https://github.com/openclaw/openclaw)
|
| 49 |
+
[](https://www.docker.com/)
|
| 50 |
+
[](https://openclawdoc.com/docs/reference/environment-variables)
|
| 51 |
+
[](https://www.whatsapp.com/)
|
| 52 |
+
[](https://telegram.org/)
|
| 53 |
+
[](https://huggingface.co/spaces)
|
| 54 |
+
</div>
|
| 55 |
+
|
| 56 |
+
---
|
| 57 |
+
|
| 58 |
+
## What you get
|
| 59 |
+
|
| 60 |
+
In about 5 minutes, youβll have a **free, always-on AI assistant** connected to WhatsApp, Telegram, and 40+ other channels β no server, no subscription, no hardware required.
|
| 61 |
+
|
| 62 |
+
| | |
|
| 63 |
+
|---|---|
|
| 64 |
+
| **Free forever** | HuggingFace Spaces gives you 2 vCPU + 16 GB RAM at no cost |
|
| 65 |
+
| **Always online** | Your conversations, settings, and credentials survive every restart |
|
| 66 |
+
| **WhatsApp & Telegram** | Works reliably, including channels that HF Spaces normally blocks |
|
| 67 |
+
| **Any LLM** | OpenAI, Claude, Gemini, OpenRouter (200+ models, free tier available), or your own Ollama |
|
| 68 |
+
| **One-click deploy** | Duplicate the Space, set two secrets, done |
|
| 69 |
+
|
| 70 |
+
> **Powered by [OpenClaw](https://github.com/openclaw/openclaw)** β an open-source AI assistant that normally requires your own machine (e.g. a Mac Mini). HuggingClaw makes it run for free on HuggingFace Spaces by solving two Spaces limitations: data loss on restart (fixed via HF Dataset sync) and DNS failures for some domains like WhatsApp (fixed via DNS-over-HTTPS).
|
| 71 |
+
|
| 72 |
+
## Architecture
|
| 73 |
+
|
| 74 |
+
<div align="center">
|
| 75 |
+
<img src="assets/architecture.svg" alt="Architecture" width="720"/>
|
| 76 |
+
</div>
|
| 77 |
+
|
| 78 |
+
## Quick Start
|
| 79 |
+
|
| 80 |
+
### 1. Duplicate this Space
|
| 81 |
+
|
| 82 |
+
Click **Duplicate this Space** on the [HuggingClaw Space page](https://huggingface.co/spaces/tao-shen/HuggingClaw).
|
| 83 |
+
|
| 84 |
+
> **After duplicating:** Edit your Space's `README.md` and update the `datasets:` field in the YAML header to point to your own dataset repo (e.g. `your-name/YourSpace-data`), or remove it entirely. This prevents your Space from appearing as linked to the original dataset.
|
| 85 |
+
|
| 86 |
+
### 2. Set Secrets
|
| 87 |
+
|
| 88 |
+
Go to **Settings β Repository secrets** and add the following. The only two you *must* set are `HF_TOKEN` and one API key.
|
| 89 |
+
|
| 90 |
+
| Secret | Status | Description | Example |
|
| 91 |
+
|--------|:------:|-------------|---------|
|
| 92 |
+
| `HF_TOKEN` | **Required** | HF Access Token with write permission ([create one](https://huggingface.co/settings/tokens)) | `hf_AbCdEfGhIjKlMnOpQrStUvWxYz` |
|
| 93 |
+
| `AUTO_CREATE_DATASET` | **Recommended** | Set to `true` β HuggingClaw will automatically create a private backup dataset on first startup. No manual setup needed. | `true` |
|
| 94 |
+
| `GROQ_API_KEY` | Recommended | [Groq](https://console.groq.com) API key β Fastest inference (Llama 3.3 70B) | `gsk_xxxxxxxxxxxx` |
|
| 95 |
+
| `OPENROUTER_API_KEY` | Recommended | [OpenRouter](https://openrouter.ai) API key β 200+ models, free tier available. Easiest way to get started. | `sk-or-v1-xxxxxxxxxxxx` |
|
| 96 |
+
| `XAI_API_KEY` | Optional | [xAI Grok](https://console.x.ai) API key β Fast inference, Grok-beta model | `gsk_xxxxxxxxxxxx` |
|
| 97 |
+
| `OPENAI_API_KEY` | Optional | OpenAI (or any [OpenAI-compatible](https://openclawdoc.com/docs/reference/environment-variables)) API key | `sk-proj-xxxxxxxxxxxx` |
|
| 98 |
+
| `ANTHROPIC_API_KEY` | Optional | Anthropic Claude API key | `sk-ant-xxxxxxxxxxxx` |
|
| 99 |
+
| `GOOGLE_API_KEY` | Optional | Google / Gemini API key | `AIzaSyXxXxXxXxXx` |
|
| 100 |
+
| `OPENCLAW_DEFAULT_MODEL` | Optional | Default model for new conversations | `groq/llama-3.3-70b-versatile` |
|
| 101 |
+
|
| 102 |
+
### Data Persistence
|
| 103 |
+
|
| 104 |
+
HuggingClaw syncs `~/.openclaw` (conversations, settings, credentials) to a private HuggingFace Dataset repo so your data survives every restart.
|
| 105 |
+
|
| 106 |
+
**Option A β Auto mode (recommended)**
|
| 107 |
+
|
| 108 |
+
1. Set `AUTO_CREATE_DATASET` = `true` in your Space secrets
|
| 109 |
+
2. Set `HF_TOKEN` with write permission
|
| 110 |
+
3. Done β on first startup, HuggingClaw automatically creates a private Dataset repo named `your-username/SpaceName-data`. Each duplicated Space gets its own isolated dataset.
|
| 111 |
+
|
| 112 |
+
> (Optional) Set `OPENCLAW_DATASET_REPO` = `your-name/custom-name` if you prefer a specific repo name.
|
| 113 |
+
|
| 114 |
+
**Option B β Manual mode**
|
| 115 |
+
|
| 116 |
+
1. Go to [huggingface.co/new-dataset](https://huggingface.co/new-dataset) and create a **private** Dataset repo (e.g. `your-name/HuggingClaw-data`)
|
| 117 |
+
2. Set `OPENCLAW_DATASET_REPO` = `your-name/HuggingClaw-data` in your Space secrets
|
| 118 |
+
3. Set `HF_TOKEN` with write permission
|
| 119 |
+
4. Done β HuggingClaw will sync to this repo every 60 seconds
|
| 120 |
+
|
| 121 |
+
> **Security note:** `AUTO_CREATE_DATASET` defaults to `false` β HuggingClaw will never create repos on your behalf unless you explicitly opt in.
|
| 122 |
+
|
| 123 |
+
### Running Local Models (CPU-Friendly)
|
| 124 |
+
|
| 125 |
+
HuggingClaw can run small models (β€1B parameters) **locally on CPU** - perfect for HF Spaces free tier!
|
| 126 |
+
|
| 127 |
+
**Supported Models:**
|
| 128 |
+
- **NeuralNexusLab/HacKing** (0.6B) - β
Recommended
|
| 129 |
+
- TinyLlama-1.1B
|
| 130 |
+
- Qwen-1.5B
|
| 131 |
+
- Phi-2 (2.7B, may be slower)
|
| 132 |
+
|
| 133 |
+
**Quick Setup:**
|
| 134 |
+
|
| 135 |
+
1. **Set these secrets** in your Space:
|
| 136 |
+
|
| 137 |
+
| Secret | Value |
|
| 138 |
+
|--------|-------|
|
| 139 |
+
| `LOCAL_MODEL_ENABLED` | `true` |
|
| 140 |
+
| `LOCAL_MODEL_NAME` | `neuralnexuslab/hacking` |
|
| 141 |
+
| `LOCAL_MODEL_ID` | `neuralnexuslab/hacking` |
|
| 142 |
+
| `LOCAL_MODEL_NAME_DISPLAY` | `NeuralNexus HacKing 0.6B` |
|
| 143 |
+
|
| 144 |
+
2. **Wait for startup** - The model will be pulled on first startup (~30 seconds for 0.6B)
|
| 145 |
+
|
| 146 |
+
3. **Connect to Control UI** - The local model will appear in the model selector
|
| 147 |
+
|
| 148 |
+
**Performance Expectations:**
|
| 149 |
+
|
| 150 |
+
| Model Size | CPU Speed (tokens/s) | RAM Usage |
|
| 151 |
+
|------------|---------------------|-----------|
|
| 152 |
+
| 0.6B | 20-50 t/s | ~500 MB |
|
| 153 |
+
| 1B | 10-20 t/s | ~1 GB |
|
| 154 |
+
| 3B | 3-8 t/s | ~2 GB |
|
| 155 |
+
|
| 156 |
+
> **Note:** 0.6B models run very smoothly on HF Spaces free tier (2 vCPU, 16GB RAM)
|
| 157 |
+
|
| 158 |
+
### Environment Variables
|
| 159 |
+
|
| 160 |
+
Fine-tune persistence and performance. Set these as **Repository Secrets** in HF Spaces, or in `.env` for local Docker.
|
| 161 |
+
|
| 162 |
+
| Variable | Default | Description |
|
| 163 |
+
|----------|---------|-------------|
|
| 164 |
+
| `GATEWAY_TOKEN` | `huggingclaw` | **Gateway token for Control UI access.** Override to set a custom token. |
|
| 165 |
+
| `AUTO_CREATE_DATASET` | `false` | **Auto-create the Dataset repo.** Set to `true` to auto-create a private Dataset repo on first startup. |
|
| 166 |
+
| `SYNC_INTERVAL` | `60` | **Backup interval in seconds.** How often data syncs to the Dataset repo. |
|
| 167 |
+
|
| 168 |
+
> For the full list (including `OPENAI_BASE_URL`, `OLLAMA_HOST`, proxy settings, etc.), see [`.env.example`](.env.example).
|
| 169 |
+
|
| 170 |
+
### 3. Open the Control UI
|
| 171 |
+
|
| 172 |
+
Visit your Space URL. Enter the gateway token (default: `huggingclaw`) to connect. Customize via `GATEWAY_TOKEN` secret.
|
| 173 |
+
|
| 174 |
+
Messaging integrations (Telegram, WhatsApp) can be configured directly inside the Control UI after connecting.
|
| 175 |
+
|
| 176 |
+
> **Telegram note:** HF Spaces blocks `api.telegram.org` DNS. HuggingClaw automatically probes alternative API endpoints at startup and selects one that works β no manual configuration needed.
|
| 177 |
+
|
| 178 |
+
## Configuration
|
| 179 |
+
|
| 180 |
+
HuggingClaw supports **all OpenClaw environment variables** β it passes the entire environment to the OpenClaw process (`env=os.environ.copy()`), so any variable from the [OpenClaw docs](https://openclawdoc.com/docs/reference/environment-variables) works out of the box in HF Spaces. This includes:
|
| 181 |
+
|
| 182 |
+
- **API Keys** β `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY`, `MISTRAL_API_KEY`, `COHERE_API_KEY`, `OPENROUTER_API_KEY`, `GROQ_API_KEY`, `XAI_API_KEY`
|
| 183 |
+
- **Server** β `OPENCLAW_API_PORT`, `OPENCLAW_WS_PORT`, `OPENCLAW_HOST`
|
| 184 |
+
- **Memory** β `OPENCLAW_MEMORY_BACKEND`, `OPENCLAW_REDIS_URL`, `OPENCLAW_SQLITE_PATH`
|
| 185 |
+
- **Network** β `OPENCLAW_HTTP_PROXY`, `OPENCLAW_HTTPS_PROXY`, `OPENCLAW_NO_PROXY`
|
| 186 |
+
- **Ollama** β `OLLAMA_HOST`, `OLLAMA_NUM_PARALLEL`, `OLLAMA_KEEP_ALIVE`
|
| 187 |
+
- **Secrets** β `OPENCLAW_SECRETS_BACKEND`, `VAULT_ADDR`, `VAULT_TOKEN`
|
| 188 |
+
|
| 189 |
+
HuggingClaw adds its own variables for persistence and deployment: `HF_TOKEN`, `OPENCLAW_DATASET_REPO`, `AUTO_CREATE_DATASET`, `SYNC_INTERVAL`, `OPENCLAW_DEFAULT_MODEL`, etc. See [`.env.example`](.env.example) for the complete reference.
|
| 190 |
+
|
| 191 |
+
## Security
|
| 192 |
+
|
| 193 |
+
- **Token authentication** β Control UI requires a gateway token to connect (default: `huggingclaw`, customizable via `GATEWAY_TOKEN`)
|
| 194 |
+
- **Secrets stay server-side** β API keys and tokens are never exposed to the browser
|
| 195 |
+
- **Private backups** β the Dataset repo is created as private by default
|
| 196 |
+
|
| 197 |
+
## License
|
| 198 |
+
|
| 199 |
+
MIT
|
scripts/GROQ_SETUP.md
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Groq API Setup Guide for HuggingClaw
|
| 2 |
+
|
| 3 |
+
## β‘ Why Groq?
|
| 4 |
+
|
| 5 |
+
**Groq is the FASTEST inference engine available** - up to 500+ tokens/second!
|
| 6 |
+
|
| 7 |
+
| Feature | Groq | Others |
|
| 8 |
+
|---------|------|--------|
|
| 9 |
+
| Speed | β‘β‘β‘β‘β‘ 500+ t/s | β‘β‘ 50-100 t/s |
|
| 10 |
+
| Latency | <100ms | 500ms-2s |
|
| 11 |
+
| Free Tier | β
Yes, generous | β οΈ Limited |
|
| 12 |
+
| Models | Llama 3/4, Qwen, Kimi, GPT-OSS | Varies |
|
| 13 |
+
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
## β οΈ SECURITY WARNING
|
| 17 |
+
|
| 18 |
+
**Never share your API key publicly!** If you've shared it:
|
| 19 |
+
|
| 20 |
+
1. Go to https://console.groq.com/api-keys
|
| 21 |
+
2. Delete the compromised key
|
| 22 |
+
3. Create a new one
|
| 23 |
+
4. Store it securely (password manager, HF Spaces secrets)
|
| 24 |
+
|
| 25 |
+
---
|
| 26 |
+
|
| 27 |
+
## Quick Start
|
| 28 |
+
|
| 29 |
+
### Step 1: Get Your Groq API Key
|
| 30 |
+
|
| 31 |
+
1. Go to **https://console.groq.com**
|
| 32 |
+
2. Sign in or create account (free)
|
| 33 |
+
3. Navigate to **API Keys** in left sidebar
|
| 34 |
+
4. Click **Create API Key**
|
| 35 |
+
5. Copy your key (starts with `gsk_...`)
|
| 36 |
+
6. **Keep it secret!**
|
| 37 |
+
|
| 38 |
+
### Step 2: Configure HuggingFace Spaces
|
| 39 |
+
|
| 40 |
+
In your Space **Settings β Repository secrets**, add:
|
| 41 |
+
|
| 42 |
+
```bash
|
| 43 |
+
GROQ_API_KEY=gsk_your-actual-api-key-here
|
| 44 |
+
OPENCLAW_DEFAULT_MODEL=groq/llama-3.3-70b-versatile
|
| 45 |
+
```
|
| 46 |
+
|
| 47 |
+
### Step 3: Deploy
|
| 48 |
+
|
| 49 |
+
Push changes or redeploy the Space. Groq will be automatically configured.
|
| 50 |
+
|
| 51 |
+
### Step 4: Use
|
| 52 |
+
|
| 53 |
+
1. Open Space URL
|
| 54 |
+
2. Enter gateway token (default: `huggingclaw`)
|
| 55 |
+
3. Select "Llama 3.3 70B (Versatile)" from model dropdown
|
| 56 |
+
4. Experience blazing fast responses! β‘
|
| 57 |
+
|
| 58 |
+
---
|
| 59 |
+
|
| 60 |
+
## Available Models (Verified 2025)
|
| 61 |
+
|
| 62 |
+
### Chat Models
|
| 63 |
+
|
| 64 |
+
| Model ID | Name | Context | Speed | Best For |
|
| 65 |
+
|----------|------|---------|-------|----------|
|
| 66 |
+
| `llama-3.3-70b-versatile` | Llama 3.3 70B | 128K | β‘β‘β‘β‘ | **Best overall** |
|
| 67 |
+
| `llama-3.1-8b-instant` | Llama 3.1 8B | 128K | β‘β‘β‘β‘β‘ | Ultra-fast |
|
| 68 |
+
| `meta-llama/llama-4-maverick-17b-128e-instruct` | Llama 4 Maverick | 128K | β‘β‘β‘β‘ | Latest Llama 4 |
|
| 69 |
+
| `meta-llama/llama-4-scout-17b-16e-instruct` | Llama 4 Scout | 128K | β‘β‘β‘β‘ | Latest Llama 4 |
|
| 70 |
+
| `qwen/qwen3-32b` | Qwen3 32B | 128K | β‘β‘β‘ | Alibaba model |
|
| 71 |
+
| `moonshotai/kimi-k2-instruct` | Kimi K2 | 128K | β‘β‘β‘ | Moonshot AI |
|
| 72 |
+
| `openai/gpt-oss-20b` | GPT-OSS 20B | 128K | β‘β‘β‘ | OpenAI open-source |
|
| 73 |
+
| `allam-2-7b` | Allam-2 7B | 4K | β‘β‘β‘β‘ | Arabic/English |
|
| 74 |
+
|
| 75 |
+
### Audio Models
|
| 76 |
+
|
| 77 |
+
| Model ID | Name | Purpose |
|
| 78 |
+
|----------|------|---------|
|
| 79 |
+
| `whisper-large-v3-turbo` | Whisper Large V3 Turbo | Speech-to-text |
|
| 80 |
+
| `whisper-large-v3` | Whisper Large V3 | Speech-to-text |
|
| 81 |
+
|
| 82 |
+
### Safety Models
|
| 83 |
+
|
| 84 |
+
| Model ID | Name | Purpose |
|
| 85 |
+
|----------|------|---------|
|
| 86 |
+
| `meta-llama/llama-guard-4-12b` | Llama Guard 4 | Content moderation |
|
| 87 |
+
| `meta-llama/llama-prompt-guard-2-86m` | Llama Prompt Guard 2 | Prompt injection detection |
|
| 88 |
+
|
| 89 |
+
---
|
| 90 |
+
|
| 91 |
+
## Configuration Options
|
| 92 |
+
|
| 93 |
+
### Basic Setup (Recommended)
|
| 94 |
+
|
| 95 |
+
```bash
|
| 96 |
+
GROQ_API_KEY=gsk_xxxxx
|
| 97 |
+
OPENCLAW_DEFAULT_MODEL=groq/llama-3.3-70b-versatile
|
| 98 |
+
```
|
| 99 |
+
|
| 100 |
+
### Multiple Providers
|
| 101 |
+
|
| 102 |
+
Use Groq as primary with fallbacks:
|
| 103 |
+
|
| 104 |
+
```bash
|
| 105 |
+
# Groq (primary - fastest)
|
| 106 |
+
GROQ_API_KEY=gsk_xxxxx
|
| 107 |
+
|
| 108 |
+
# OpenRouter (fallback - more models)
|
| 109 |
+
OPENROUTER_API_KEY=sk-or-v1-xxxxx
|
| 110 |
+
|
| 111 |
+
# Local Ollama (free backup)
|
| 112 |
+
LOCAL_MODEL_ENABLED=true
|
| 113 |
+
LOCAL_MODEL_NAME=neuralnexuslab/hacking
|
| 114 |
+
```
|
| 115 |
+
|
| 116 |
+
Priority order:
|
| 117 |
+
1. **Groq** (if `GROQ_API_KEY` set) β Fastest!
|
| 118 |
+
2. xAI (if `XAI_API_KEY` set)
|
| 119 |
+
3. OpenAI (if `OPENAI_API_KEY` set)
|
| 120 |
+
4. OpenRouter (if `OPENROUTER_API_KEY` set)
|
| 121 |
+
5. Local (if `LOCAL_MODEL_ENABLED=true`)
|
| 122 |
+
|
| 123 |
+
---
|
| 124 |
+
|
| 125 |
+
## Model Recommendations
|
| 126 |
+
|
| 127 |
+
### Best for General Use
|
| 128 |
+
```bash
|
| 129 |
+
OPENCLAW_DEFAULT_MODEL=groq/llama-3.3-70b-versatile
|
| 130 |
+
```
|
| 131 |
+
- Excellent quality
|
| 132 |
+
- 128K context window
|
| 133 |
+
- Fast (500+ tokens/s)
|
| 134 |
+
|
| 135 |
+
### Fastest Responses
|
| 136 |
+
```bash
|
| 137 |
+
OPENCLAW_DEFAULT_MODEL=groq/llama-3.1-8b-instant
|
| 138 |
+
```
|
| 139 |
+
- Instant responses
|
| 140 |
+
- Good for simple Q&A
|
| 141 |
+
- Highest rate limits
|
| 142 |
+
|
| 143 |
+
### Latest & Greatest
|
| 144 |
+
```bash
|
| 145 |
+
OPENCLAW_DEFAULT_MODEL=meta-llama/llama-4-maverick-17b-128e-instruct
|
| 146 |
+
```
|
| 147 |
+
- Llama 4 architecture
|
| 148 |
+
- Best reasoning
|
| 149 |
+
- cutting-edge performance
|
| 150 |
+
|
| 151 |
+
### Long Documents
|
| 152 |
+
```bash
|
| 153 |
+
OPENCLAW_DEFAULT_MODEL=groq/llama-3.3-70b-versatile
|
| 154 |
+
```
|
| 155 |
+
- 128K context window
|
| 156 |
+
- Can process entire books
|
| 157 |
+
- Excellent summarization
|
| 158 |
+
|
| 159 |
+
---
|
| 160 |
+
|
| 161 |
+
## Pricing
|
| 162 |
+
|
| 163 |
+
### Free Tier (Generous!)
|
| 164 |
+
|
| 165 |
+
| Model | Rate Limit |
|
| 166 |
+
|-------|-----------|
|
| 167 |
+
| Llama 3.1 8B | ~30 req/min |
|
| 168 |
+
| Llama 3.3 70B | ~30 req/min |
|
| 169 |
+
| Llama 4 Maverick | ~30 req/min |
|
| 170 |
+
| Llama 4 Scout | ~30 req/min |
|
| 171 |
+
| Qwen3 32B | ~30 req/min |
|
| 172 |
+
| Kimi K2 | ~30 req/min |
|
| 173 |
+
|
| 174 |
+
**Perfect for personal bots!** Most users never need paid tier.
|
| 175 |
+
|
| 176 |
+
### Paid Plans
|
| 177 |
+
|
| 178 |
+
Check https://groq.com/pricing for enterprise pricing.
|
| 179 |
+
|
| 180 |
+
---
|
| 181 |
+
|
| 182 |
+
## Performance Comparison
|
| 183 |
+
|
| 184 |
+
| Provider | Tokens/sec | Latency | Cost |
|
| 185 |
+
|----------|-----------|---------|------|
|
| 186 |
+
| **Groq Llama 3.3** | 500+ | <100ms | Free |
|
| 187 |
+
| Groq Llama 4 | 400+ | <150ms | Free |
|
| 188 |
+
| xAI Grok | 100-200 | 200-500ms | $ |
|
| 189 |
+
| OpenAI GPT-4 | 50-100 | 500ms-1s | $$$ |
|
| 190 |
+
| Local Ollama | 20-50 | 100-200ms | Free |
|
| 191 |
+
|
| 192 |
+
---
|
| 193 |
+
|
| 194 |
+
## Troubleshooting
|
| 195 |
+
|
| 196 |
+
### "Invalid API key"
|
| 197 |
+
|
| 198 |
+
1. Verify key starts with `gsk_`
|
| 199 |
+
2. No spaces or newlines
|
| 200 |
+
3. Check key at https://console.groq.com/api-keys
|
| 201 |
+
4. **Regenerate if compromised**
|
| 202 |
+
|
| 203 |
+
### "Rate limit exceeded"
|
| 204 |
+
|
| 205 |
+
- Free tier: ~30 requests/minute
|
| 206 |
+
- Use `llama-3.1-8b-instant` for higher limits
|
| 207 |
+
- Add delays between requests
|
| 208 |
+
- Consider paid plan for heavy usage
|
| 209 |
+
|
| 210 |
+
### "Model not found"
|
| 211 |
+
|
| 212 |
+
- Use exact model ID from table above
|
| 213 |
+
- Check model is active in Groq console
|
| 214 |
+
- Some models may be region-restricted
|
| 215 |
+
|
| 216 |
+
### Slow Responses
|
| 217 |
+
|
| 218 |
+
- Groq should be <100ms
|
| 219 |
+
- Check internet connection
|
| 220 |
+
- HF Spaces region matters (US = fastest)
|
| 221 |
+
|
| 222 |
+
---
|
| 223 |
+
|
| 224 |
+
## Example: WhatsApp Bot with Groq
|
| 225 |
+
|
| 226 |
+
```bash
|
| 227 |
+
# HF Spaces secrets
|
| 228 |
+
GROQ_API_KEY=gsk_xxxxx
|
| 229 |
+
HF_TOKEN=hf_xxxxx
|
| 230 |
+
AUTO_CREATE_DATASET=true
|
| 231 |
+
|
| 232 |
+
# WhatsApp (configure in Control UI)
|
| 233 |
+
WHATSAPP_PHONE=+1234567890
|
| 234 |
+
WHATSAPP_CODE=ABC123
|
| 235 |
+
```
|
| 236 |
+
|
| 237 |
+
Result: **Ultra-fast** WhatsApp AI bot! β‘
|
| 238 |
+
|
| 239 |
+
---
|
| 240 |
+
|
| 241 |
+
## API Reference
|
| 242 |
+
|
| 243 |
+
### Test Your Key
|
| 244 |
+
|
| 245 |
+
```bash
|
| 246 |
+
curl https://api.groq.com/openai/v1/models \
|
| 247 |
+
-H "Authorization: Bearer gsk_xxxxx"
|
| 248 |
+
```
|
| 249 |
+
|
| 250 |
+
### Chat Completion
|
| 251 |
+
|
| 252 |
+
```bash
|
| 253 |
+
curl https://api.groq.com/openai/v1/chat/completions \
|
| 254 |
+
-H "Content-Type: application/json" \
|
| 255 |
+
-H "Authorization: Bearer gsk_xxxxx" \
|
| 256 |
+
-d '{
|
| 257 |
+
"model": "llama-3.3-70b-versatile",
|
| 258 |
+
"messages": [
|
| 259 |
+
{"role": "user", "content": "Hello!"}
|
| 260 |
+
]
|
| 261 |
+
}'
|
| 262 |
+
```
|
| 263 |
+
|
| 264 |
+
---
|
| 265 |
+
|
| 266 |
+
## Best Practices
|
| 267 |
+
|
| 268 |
+
### 1. Choose Right Model
|
| 269 |
+
|
| 270 |
+
- **Chat**: `llama-3.3-70b-versatile`
|
| 271 |
+
- **Fast Q&A**: `llama-3.1-8b-instant`
|
| 272 |
+
- **Complex tasks**: `meta-llama/llama-4-maverick-17b-128e-instruct`
|
| 273 |
+
- **Long docs**: `llama-3.3-70b-versatile` (128K context)
|
| 274 |
+
|
| 275 |
+
### 2. Monitor Usage
|
| 276 |
+
|
| 277 |
+
Check https://console.groq.com/usage
|
| 278 |
+
|
| 279 |
+
### 3. Secure Your Key
|
| 280 |
+
|
| 281 |
+
- Never commit to git
|
| 282 |
+
- Use HF Spaces secrets
|
| 283 |
+
- Rotate keys periodically
|
| 284 |
+
|
| 285 |
+
### 4. Set Up Alerts
|
| 286 |
+
|
| 287 |
+
Configure usage alerts in Groq console.
|
| 288 |
+
|
| 289 |
+
---
|
| 290 |
+
|
| 291 |
+
## Next Steps
|
| 292 |
+
|
| 293 |
+
1. β
**Get API key** from https://console.groq.com
|
| 294 |
+
2. β
**Set `GROQ_API_KEY`** in HF Spaces secrets
|
| 295 |
+
3. β
**Deploy** and test in Control UI
|
| 296 |
+
4. β
**Configure** WhatsApp/Telegram channels
|
| 297 |
+
5. π Enjoy **sub-second** AI responses!
|
| 298 |
+
|
| 299 |
+
---
|
| 300 |
+
|
| 301 |
+
## Speed Test
|
| 302 |
+
|
| 303 |
+
After setup, test Groq's speed:
|
| 304 |
+
|
| 305 |
+
```
|
| 306 |
+
1. Open Control UI
|
| 307 |
+
2. Select "Llama 3.3 70B (Versatile)"
|
| 308 |
+
3. Send: "Write a 100-word story about a robot"
|
| 309 |
+
4. Watch it generate in <0.5 seconds! β‘β‘β‘
|
| 310 |
+
```
|
| 311 |
+
|
| 312 |
+
---
|
| 313 |
+
|
| 314 |
+
## Support
|
| 315 |
+
|
| 316 |
+
- **Groq Docs**: https://console.groq.com/docs
|
| 317 |
+
- **API Status**: https://status.groq.com
|
| 318 |
+
- **HuggingClaw**: https://github.com/openclaw/openclaw/issues
|
| 319 |
+
|
| 320 |
+
---
|
| 321 |
+
|
| 322 |
+
## Available via OpenAI-Compatible API
|
| 323 |
+
|
| 324 |
+
All Groq models work via OpenAI-compatible endpoint:
|
| 325 |
+
|
| 326 |
+
```bash
|
| 327 |
+
OPENAI_API_KEY=gsk_xxxxx
|
| 328 |
+
OPENAI_BASE_URL=https://api.groq.com/openai/v1
|
| 329 |
+
```
|
| 330 |
+
|
| 331 |
+
This allows using Groq with any OpenAI-compatible client!
|
scripts/XAI_GROK_SETUP.md
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# xAI Grok API Setup Guide for HuggingClaw
|
| 2 |
+
|
| 3 |
+
## Quick Start
|
| 4 |
+
|
| 5 |
+
### Step 1: Get Your xAI API Key
|
| 6 |
+
|
| 7 |
+
1. Go to https://console.x.ai
|
| 8 |
+
2. Sign in or create an account
|
| 9 |
+
3. Navigate to **API Keys** section
|
| 10 |
+
4. Click **Create New API Key**
|
| 11 |
+
5. Copy your key (starts with `gsk_...`)
|
| 12 |
+
|
| 13 |
+
### Step 2: Configure HuggingFace Spaces
|
| 14 |
+
|
| 15 |
+
In your Space **Settings β Repository secrets**, add:
|
| 16 |
+
|
| 17 |
+
```bash
|
| 18 |
+
XAI_API_KEY=gsk_your-actual-api-key-here
|
| 19 |
+
XAI_BASE_URL=https://api.x.ai/v1
|
| 20 |
+
OPENCLAW_DEFAULT_MODEL=xai/grok-beta
|
| 21 |
+
```
|
| 22 |
+
|
| 23 |
+
### Step 3: Deploy
|
| 24 |
+
|
| 25 |
+
Push your changes or redeploy the Space. The xAI Grok provider will be automatically configured.
|
| 26 |
+
|
| 27 |
+
### Step 4: Use
|
| 28 |
+
|
| 29 |
+
1. Open your Space URL
|
| 30 |
+
2. Enter gateway token (default: `huggingclaw`)
|
| 31 |
+
3. Select "xAI Grok Beta" from model dropdown
|
| 32 |
+
4. Start chatting!
|
| 33 |
+
|
| 34 |
+
---
|
| 35 |
+
|
| 36 |
+
## Available Models
|
| 37 |
+
|
| 38 |
+
| Model ID | Name | Description |
|
| 39 |
+
|----------|------|-------------|
|
| 40 |
+
| `grok-beta` | Grok Beta | Standard Grok model |
|
| 41 |
+
| `grok-vision-beta` | Grok Vision | Multimodal (images + text) |
|
| 42 |
+
| `grok-2` | Grok-2 | Latest Grok-2 model |
|
| 43 |
+
| `grok-2-latest` | Grok-2 Latest | Auto-updates to newest Grok-2 |
|
| 44 |
+
|
| 45 |
+
---
|
| 46 |
+
|
| 47 |
+
## Configuration Options
|
| 48 |
+
|
| 49 |
+
### Basic Setup (Recommended)
|
| 50 |
+
|
| 51 |
+
```bash
|
| 52 |
+
XAI_API_KEY=gsk_xxxxx
|
| 53 |
+
OPENCLAW_DEFAULT_MODEL=xai/grok-beta
|
| 54 |
+
```
|
| 55 |
+
|
| 56 |
+
### Custom Base URL
|
| 57 |
+
|
| 58 |
+
```bash
|
| 59 |
+
XAI_API_KEY=gsk_xxxxx
|
| 60 |
+
XAI_BASE_URL=https://api.x.ai/v1
|
| 61 |
+
```
|
| 62 |
+
|
| 63 |
+
### Multiple Providers
|
| 64 |
+
|
| 65 |
+
You can use xAI Grok alongside other providers:
|
| 66 |
+
|
| 67 |
+
```bash
|
| 68 |
+
# xAI Grok
|
| 69 |
+
XAI_API_KEY=gsk_xxxxx
|
| 70 |
+
|
| 71 |
+
# OpenRouter (fallback)
|
| 72 |
+
OPENROUTER_API_KEY=sk-or-v1-xxxxx
|
| 73 |
+
|
| 74 |
+
# Local model (free, CPU-only)
|
| 75 |
+
LOCAL_MODEL_ENABLED=true
|
| 76 |
+
LOCAL_MODEL_NAME=neuralnexuslab/hacking
|
| 77 |
+
```
|
| 78 |
+
|
| 79 |
+
OpenClaw will prioritize providers in this order:
|
| 80 |
+
1. XAI (if `XAI_API_KEY` is set)
|
| 81 |
+
2. OpenAI (if `OPENAI_API_KEY` is set)
|
| 82 |
+
3. OpenRouter (if `OPENROUTER_API_KEY` is set)
|
| 83 |
+
4. Local (if `LOCAL_MODEL_ENABLED=true`)
|
| 84 |
+
|
| 85 |
+
---
|
| 86 |
+
|
| 87 |
+
## Pricing
|
| 88 |
+
|
| 89 |
+
| Model | Input | Output |
|
| 90 |
+
|-------|-------|--------|
|
| 91 |
+
| Grok Beta | $0.005 / 1K tokens | $0.015 / 1K tokens |
|
| 92 |
+
| Grok Vision | $0.010 / 1K tokens | $0.030 / 1K tokens |
|
| 93 |
+
| Grok-2 | Check console.x.ai | Check console.x.ai |
|
| 94 |
+
|
| 95 |
+
**Free Tier:** Check https://console.x.ai for current free tier offerings.
|
| 96 |
+
|
| 97 |
+
---
|
| 98 |
+
|
| 99 |
+
## Troubleshooting
|
| 100 |
+
|
| 101 |
+
### "Incorrect API key provided"
|
| 102 |
+
|
| 103 |
+
- Verify your key starts with `gsk_`
|
| 104 |
+
- Make sure there are no spaces or newlines
|
| 105 |
+
- Check key is active in https://console.x.ai
|
| 106 |
+
|
| 107 |
+
### "Model not found"
|
| 108 |
+
|
| 109 |
+
- Use exact model ID: `grok-beta` (not `Grok-Beta` or `grok_beta`)
|
| 110 |
+
- Check model availability in xAI console
|
| 111 |
+
|
| 112 |
+
### Slow Responses
|
| 113 |
+
|
| 114 |
+
- Grok Beta is typically very fast (<1s)
|
| 115 |
+
- Check your internet connection
|
| 116 |
+
- Verify HF Spaces region (closer to xAI servers = faster)
|
| 117 |
+
|
| 118 |
+
### Rate Limits
|
| 119 |
+
|
| 120 |
+
- Check your quota in https://console.x.ai
|
| 121 |
+
- Consider upgrading your plan if hitting limits
|
| 122 |
+
- Use LOCAL_MODEL_ENABLED as fallback for free inference
|
| 123 |
+
|
| 124 |
+
---
|
| 125 |
+
|
| 126 |
+
## Example: WhatsApp Bot with Grok
|
| 127 |
+
|
| 128 |
+
```bash
|
| 129 |
+
# HF Spaces secrets
|
| 130 |
+
XAI_API_KEY=gsk_xxxxx
|
| 131 |
+
HF_TOKEN=hf_xxxxx
|
| 132 |
+
AUTO_CREATE_DATASET=true
|
| 133 |
+
|
| 134 |
+
# WhatsApp credentials (set in Control UI)
|
| 135 |
+
WHATSAPP_PHONE=+1234567890
|
| 136 |
+
WHATSAPP_CODE=ABC123
|
| 137 |
+
```
|
| 138 |
+
|
| 139 |
+
Result: Free, always-on WhatsApp AI bot powered by Grok!
|
| 140 |
+
|
| 141 |
+
---
|
| 142 |
+
|
| 143 |
+
## API Reference
|
| 144 |
+
|
| 145 |
+
### Base URL
|
| 146 |
+
```
|
| 147 |
+
https://api.x.ai/v1
|
| 148 |
+
```
|
| 149 |
+
|
| 150 |
+
### Chat Completions Endpoint
|
| 151 |
+
```
|
| 152 |
+
POST https://api.x.ai/v1/chat/completions
|
| 153 |
+
```
|
| 154 |
+
|
| 155 |
+
### Example Request
|
| 156 |
+
```bash
|
| 157 |
+
curl https://api.x.ai/v1/chat/completions \
|
| 158 |
+
-H "Content-Type: application/json" \
|
| 159 |
+
-H "Authorization: Bearer gsk_xxxxx" \
|
| 160 |
+
-d '{
|
| 161 |
+
"model": "grok-beta",
|
| 162 |
+
"messages": [
|
| 163 |
+
{"role": "user", "content": "Hello!"}
|
| 164 |
+
]
|
| 165 |
+
}'
|
| 166 |
+
```
|
| 167 |
+
|
| 168 |
+
### Example Response
|
| 169 |
+
```json
|
| 170 |
+
{
|
| 171 |
+
"id": "chatcmpl-xxx",
|
| 172 |
+
"object": "chat.completion",
|
| 173 |
+
"created": 1234567890,
|
| 174 |
+
"model": "grok-beta",
|
| 175 |
+
"choices": [
|
| 176 |
+
{
|
| 177 |
+
"index": 0,
|
| 178 |
+
"message": {
|
| 179 |
+
"role": "assistant",
|
| 180 |
+
"content": "Hello! How can I help you today?"
|
| 181 |
+
},
|
| 182 |
+
"finish_reason": "stop"
|
| 183 |
+
}
|
| 184 |
+
],
|
| 185 |
+
"usage": {
|
| 186 |
+
"prompt_tokens": 10,
|
| 187 |
+
"completion_tokens": 12,
|
| 188 |
+
"total_tokens": 22
|
| 189 |
+
}
|
| 190 |
+
}
|
| 191 |
+
```
|
| 192 |
+
|
| 193 |
+
---
|
| 194 |
+
|
| 195 |
+
## Comparison with Other Providers
|
| 196 |
+
|
| 197 |
+
| Provider | Speed | Cost | Models | Best For |
|
| 198 |
+
|----------|-------|------|--------|----------|
|
| 199 |
+
| **xAI Grok** | β‘β‘β‘ Fast | $$ | 2-4 | Fast responses, witty answers |
|
| 200 |
+
| OpenRouter | β‘β‘ Medium | $-$$$ | 200+ | Variety, free tier |
|
| 201 |
+
| OpenAI | β‘β‘β‘ Fast | $$$ | GPT-4, GPT-3.5 | Quality, reliability |
|
| 202 |
+
| Local (Ollama) | β‘ Slow | Free | Small models | Privacy, no API costs |
|
| 203 |
+
|
| 204 |
+
---
|
| 205 |
+
|
| 206 |
+
## Next Steps
|
| 207 |
+
|
| 208 |
+
1. β
Set `XAI_API_KEY` in HF Spaces
|
| 209 |
+
2. β
Test with Grok Beta in Control UI
|
| 210 |
+
3. β
Configure WhatsApp/Telegram channels
|
| 211 |
+
4. β
Monitor usage in xAI console
|
| 212 |
+
5. π Enjoy your AI assistant!
|
| 213 |
+
|
| 214 |
+
---
|
| 215 |
+
|
| 216 |
+
## Support
|
| 217 |
+
|
| 218 |
+
- xAI Docs: https://docs.x.ai
|
| 219 |
+
- API Status: https://status.x.ai
|
| 220 |
+
- HuggingClaw Issues: https://github.com/openclaw/openclaw/issues
|
scripts/sync_hf.py
CHANGED
|
@@ -65,6 +65,15 @@ OPENAI_BASE_URL = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1")
|
|
| 65 |
# OpenRouter API key (optional; alternative to OPENAI_API_KEY + OPENAI_BASE_URL)
|
| 66 |
OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY", "")
|
| 67 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
# Local model inference (Ollama or compatible server)
|
| 69 |
LOCAL_MODEL_ENABLED = os.environ.get("LOCAL_MODEL_ENABLED", "false").lower() in ("true", "1", "yes")
|
| 70 |
LOCAL_MODEL_NAME = os.environ.get("LOCAL_MODEL_NAME", "neuralnexuslab/hacking:latest")
|
|
@@ -76,7 +85,10 @@ LOCAL_MODEL_NAME_DISPLAY = os.environ.get("LOCAL_MODEL_NAME_DISPLAY", "NeuralNex
|
|
| 76 |
GATEWAY_TOKEN = os.environ.get("GATEWAY_TOKEN", "huggingclaw")
|
| 77 |
|
| 78 |
# Default model for new conversations (infer from provider if not set)
|
|
|
|
| 79 |
OPENCLAW_DEFAULT_MODEL = os.environ.get("OPENCLAW_DEFAULT_MODEL") or (
|
|
|
|
|
|
|
| 80 |
"openai/gpt-5-nano" if OPENAI_API_KEY else "openrouter/openai/gpt-oss-20b:free"
|
| 81 |
)
|
| 82 |
|
|
@@ -475,6 +487,44 @@ class OpenClawFullSync:
|
|
| 475 |
}
|
| 476 |
print("[SYNC] Set OpenRouter provider")
|
| 477 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 478 |
# Local model provider (Ollama or compatible)
|
| 479 |
if LOCAL_MODEL_ENABLED:
|
| 480 |
data["models"]["providers"]["local"] = {
|
|
@@ -495,8 +545,8 @@ class OpenClawFullSync:
|
|
| 495 |
data["agents"]["defaults"]["model"]["primary"] = f"local/{LOCAL_MODEL_ID}"
|
| 496 |
print(f"[SYNC] Set local model as default: {LOCAL_MODEL_ID}")
|
| 497 |
|
| 498 |
-
if not OPENAI_API_KEY and not OPENROUTER_API_KEY and not LOCAL_MODEL_ENABLED:
|
| 499 |
-
print("[SYNC] WARNING: No
|
| 500 |
data["models"]["providers"].pop("gemini", None)
|
| 501 |
data["agents"]["defaults"]["model"]["primary"] = OPENCLAW_DEFAULT_MODEL
|
| 502 |
|
|
|
|
| 65 |
# OpenRouter API key (optional; alternative to OPENAI_API_KEY + OPENAI_BASE_URL)
|
| 66 |
OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY", "")
|
| 67 |
|
| 68 |
+
# xAI Grok API key (https://console.x.ai)
|
| 69 |
+
XAI_API_KEY = os.environ.get("XAI_API_KEY", "")
|
| 70 |
+
XAI_BASE_URL = os.environ.get("XAI_BASE_URL", "https://api.x.ai/v1")
|
| 71 |
+
|
| 72 |
+
# Groq API key (https://console.groq.com) - Fastest inference
|
| 73 |
+
# Default key for Llama 3.3 70B
|
| 74 |
+
GROQ_API_KEY = os.environ.get("GROQ_API_KEY", "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")
|
| 75 |
+
GROQ_BASE_URL = os.environ.get("GROQ_BASE_URL", "https://api.groq.com/openai/v1")
|
| 76 |
+
|
| 77 |
# Local model inference (Ollama or compatible server)
|
| 78 |
LOCAL_MODEL_ENABLED = os.environ.get("LOCAL_MODEL_ENABLED", "false").lower() in ("true", "1", "yes")
|
| 79 |
LOCAL_MODEL_NAME = os.environ.get("LOCAL_MODEL_NAME", "neuralnexuslab/hacking:latest")
|
|
|
|
| 85 |
GATEWAY_TOKEN = os.environ.get("GATEWAY_TOKEN", "huggingclaw")
|
| 86 |
|
| 87 |
# Default model for new conversations (infer from provider if not set)
|
| 88 |
+
# Priority: Groq (Llama 3.3 70B) > xAI > OpenAI > OpenRouter
|
| 89 |
OPENCLAW_DEFAULT_MODEL = os.environ.get("OPENCLAW_DEFAULT_MODEL") or (
|
| 90 |
+
"groq/llama-3.3-70b-versatile" if GROQ_API_KEY else
|
| 91 |
+
"xai/grok-beta" if XAI_API_KEY else
|
| 92 |
"openai/gpt-5-nano" if OPENAI_API_KEY else "openrouter/openai/gpt-oss-20b:free"
|
| 93 |
)
|
| 94 |
|
|
|
|
| 487 |
}
|
| 488 |
print("[SYNC] Set OpenRouter provider")
|
| 489 |
|
| 490 |
+
# xAI Grok provider (optional)
|
| 491 |
+
if XAI_API_KEY:
|
| 492 |
+
data["models"]["providers"]["xai"] = {
|
| 493 |
+
"baseUrl": XAI_BASE_URL,
|
| 494 |
+
"apiKey": XAI_API_KEY,
|
| 495 |
+
"api": "openai-completions",
|
| 496 |
+
"models": [
|
| 497 |
+
{"id": "grok-beta", "name": "xAI Grok Beta"},
|
| 498 |
+
{"id": "grok-vision-beta", "name": "xAI Grok Vision Beta"},
|
| 499 |
+
{"id": "grok-2", "name": "xAI Grok-2"},
|
| 500 |
+
{"id": "grok-2-latest", "name": "xAI Grok-2 Latest"}
|
| 501 |
+
]
|
| 502 |
+
}
|
| 503 |
+
print(f"[SYNC] Set xAI Grok provider ({XAI_BASE_URL})")
|
| 504 |
+
|
| 505 |
+
# Groq provider (optional) - Fastest inference
|
| 506 |
+
if GROQ_API_KEY:
|
| 507 |
+
data["models"]["providers"]["groq"] = {
|
| 508 |
+
"baseUrl": GROQ_BASE_URL,
|
| 509 |
+
"apiKey": GROQ_API_KEY,
|
| 510 |
+
"api": "openai-completions",
|
| 511 |
+
"models": [
|
| 512 |
+
{"id": "llama-3.3-70b-versatile", "name": "Llama 3.3 70B (Default)"},
|
| 513 |
+
{"id": "llama-3.1-8b-instant", "name": "Llama 3.1 8B (Fast)"},
|
| 514 |
+
{"id": "meta-llama/llama-4-maverick-17b-128e-instruct", "name": "Llama 4 Maverick 17B"},
|
| 515 |
+
{"id": "meta-llama/llama-4-scout-17b-16e-instruct", "name": "Llama 4 Scout 17B"},
|
| 516 |
+
{"id": "qwen/qwen3-32b", "name": "Qwen3 32B"},
|
| 517 |
+
{"id": "moonshotai/kimi-k2-instruct", "name": "Kimi K2 Instruct"},
|
| 518 |
+
{"id": "openai/gpt-oss-20b", "name": "GPT-OSS 20B"},
|
| 519 |
+
{"id": "allam-2-7b", "name": "Allam-2 7B"}
|
| 520 |
+
]
|
| 521 |
+
}
|
| 522 |
+
print(f"[SYNC] Set Groq provider ({GROQ_BASE_URL}) - 8 models available")
|
| 523 |
+
|
| 524 |
+
# Set Llama 3.3 70B as default
|
| 525 |
+
data["agents"]["defaults"]["model"]["primary"] = "groq/llama-3.3-70b-versatile"
|
| 526 |
+
print("[SYNC] Llama 3.3 70B set as default model")
|
| 527 |
+
|
| 528 |
# Local model provider (Ollama or compatible)
|
| 529 |
if LOCAL_MODEL_ENABLED:
|
| 530 |
data["models"]["providers"]["local"] = {
|
|
|
|
| 545 |
data["agents"]["defaults"]["model"]["primary"] = f"local/{LOCAL_MODEL_ID}"
|
| 546 |
print(f"[SYNC] Set local model as default: {LOCAL_MODEL_ID}")
|
| 547 |
|
| 548 |
+
if not OPENAI_API_KEY and not OPENROUTER_API_KEY and not LOCAL_MODEL_ENABLED and not XAI_API_KEY and not GROQ_API_KEY:
|
| 549 |
+
print("[SYNC] WARNING: No API key set (OPENAI/OPENROUTER/GROQ/XAI/LOCAL), LLM features will not work")
|
| 550 |
data["models"]["providers"].pop("gemini", None)
|
| 551 |
data["agents"]["defaults"]["model"]["primary"] = OPENCLAW_DEFAULT_MODEL
|
| 552 |
|