2026-02-04 11:06:13 +00:00
< div align = "center" >
2026-02-13 12:20:33 +00:00
< img src = "assets/logo.jpg" alt = "PicoClaw" width = "512" >
2026-02-04 11:06:13 +00:00
2026-02-13 12:20:33 +00:00
< h1 > PicoClaw: Ultra-Efficient AI Assistant in Go< / h1 >
2026-02-04 11:06:13 +00:00
2026-02-13 12:20:33 +00:00
< h3 > $10 Hardware · 10MB RAM · 1s Boot · 皮皮虾,我们走!< / h3 >
2026-02-04 11:06:13 +00:00
2026-02-13 12:20:33 +00:00
< p >
< img src = "https://img.shields.io/badge/Go-1.21+-00ADD8?style=flat&logo=go&logoColor=white" alt = "Go" >
< img src = "https://img.shields.io/badge/Arch-x86__64%2C%20ARM64%2C%20RISC--V-blue" alt = "Hardware" >
< img src = "https://img.shields.io/badge/license-MIT-green" alt = "License" >
< br >
< a href = "https://picoclaw.io" > < img src = "https://img.shields.io/badge/Website-picoclaw.io-blue?style=flat&logo=google-chrome&logoColor=white" alt = "Website" > < / a >
< a href = "https://x.com/SipeedIO" > < img src = "https://img.shields.io/badge/X_(Twitter)-SipeedIO-black?style=flat&logo=x&logoColor=white" alt = "Twitter" > < / a >
< / p >
2026-02-10 11:34:08 +00:00
2026-02-13 12:20:33 +00:00
[中文 ](README.zh.md ) | [日本語 ](README.ja.md ) | **English**
2026-02-04 11:06:13 +00:00
< / div >
---
🦐 PicoClaw is an ultra-lightweight personal AI Assistant inspired by [nanobot ](https://github.com/HKUDS/nanobot ), refactored from the ground up in Go through a self-bootstrapping process, where the AI agent itself drove the entire architectural migration and code optimization.
⚡️ Runs on $10 hardware with < 10MB RAM: That ' s 99 % less memory than OpenClaw and 98 % cheaper than a Mac mini !
< table align = "center" >
< tr align = "center" >
< td align = "center" valign = "top" >
< p align = "center" >
< img src = "assets/picoclaw_mem.gif" width = "360" height = "240" >
< / p >
< / td >
< td align = "center" valign = "top" >
< p align = "center" >
< img src = "assets/licheervnano.png" width = "400" height = "240" >
< / p >
< / td >
< / tr >
< / table >
2026-02-13 12:20:33 +00:00
> [!CAUTION]
> **🚨 SECURITY & OFFICIAL CHANNELS / 安全声明**
>
> * **NO CRYPTO:** PicoClaw has **NO** official token/coin. All claims on `pump.fun` or other trading platforms are **SCAMS**.
> * **OFFICIAL DOMAIN:** The **ONLY** official website is **[picoclaw.io](https://picoclaw.io)**, and company website is **[sipeed.com](https://sipeed.com)**
2026-02-13 16:05:14 +00:00
> * **Warning:** Many `.ai/.org/.com/.net/...` domains are registered by third parties.
2026-02-15 12:49:58 +00:00
> * **Warning:** picoclaw is in early development now and may have unresolved network security issues. Do not deploy to production environments before the v1.0 release.
2026-02-13 12:20:33 +00:00
2026-02-04 11:06:13 +00:00
## 📢 News
2026-02-13 16:05:14 +00:00
2026-02-13 12:20:33 +00:00
2026-02-13 🎉 PicoClaw hit 5000 stars in 4days! Thank you for the community! There are so many PRs& issues come in (during Chinese New Year holidays), we are finalizing the Project Roadmap and setting up the Developer Group to accelerate PicoClaw's development.
🚀 Call to Action: Please submit your feature requests in GitHub Discussions. We will review and prioritize them during our upcoming weekly meeting.
2026-02-12 18:33:39 +00:00
2026-02-09 🎉 PicoClaw Launched! Built in 1 day to bring AI Agents to $10 hardware with < 10MB RAM . 🦐 PicoClaw , Let ' s Go !
2026-02-04 11:06:13 +00:00
## ✨ Features
🪶 **Ultra-Lightweight** : < 10MB Memory footprint — 99 % smaller than Clawdbot - core functionality .
💰 **Minimal Cost** : Efficient enough to run on $10 Hardware — 98% cheaper than a Mac mini.
⚡️ **Lightning Fast** : 400X Faster startup time, boot in 1 second even in 0.6GHz single core.
🌍 **True Portability** : Single self-contained binary across RISC-V, ARM, and x86, One-click to Go!
🤖 **AI-Bootstrapped** : Autonomous Go-native implementation — 95% Agent-generated core with human-in-the-loop refinement.
2026-02-12 16:18:51 +00:00
| | OpenClaw | NanoBot | **PicoClaw** |
| ----------------------------- | ------------- | ------------------------ | ----------------------------------------- |
| **Language** | TypeScript | Python | **Go** |
| **RAM** | >1GB | >100MB | ** < 10MB ** |
| **Startup** </ br > (0.8GHz core) | >500s | >30s | ** < 1s ** |
| **Cost** | Mac Mini 599$ | Most Linux SBC </ br > ~50$ | **Any Linux Board** </ br > **As low as 10$** |
2026-02-04 11:06:13 +00:00
2026-02-11 23:53:16 +00:00
< img src = "assets/compare.jpg" alt = "PicoClaw" width = "512" >
2026-02-04 11:06:13 +00:00
## 🦾 Demonstration
2026-02-11 23:53:16 +00:00
2026-02-04 11:06:13 +00:00
### 🛠️ Standard Assistant Workflows
2026-02-11 23:53:16 +00:00
2026-02-04 11:06:13 +00:00
< table align = "center" >
< tr align = "center" >
< th > < p align = "center" > 🧩 Full-Stack Engineer< / p > < / th >
< th > < p align = "center" > 🗂️ Logging & Planning Management< / p > < / th >
< th > < p align = "center" > 🔎 Web Search & Learning< / p > < / th >
< / tr >
< tr >
< td align = "center" > < p align = "center" > < img src = "assets/picoclaw_code.gif" width = "240" height = "180" > < / p > < / td >
< td align = "center" > < p align = "center" > < img src = "assets/picoclaw_memory.gif" width = "240" height = "180" > < / p > < / td >
< td align = "center" > < p align = "center" > < img src = "assets/picoclaw_search.gif" width = "240" height = "180" > < / p > < / td >
< / tr >
< tr >
< td align = "center" > Develop • Deploy • Scale< / td >
< td align = "center" > Schedule • Automate • Memory< / td >
< td align = "center" > Discovery • Insights • Trends< / td >
< / tr >
< / table >
### 🐜 Innovative Low-Footprint Deploy
2026-02-11 23:53:16 +00:00
2026-02-10 07:54:59 +00:00
PicoClaw can be deployed on almost any Linux device!
2026-02-12 16:18:51 +00:00
- $9.9 [LicheeRV-Nano ](https://www.aliexpress.com/item/1005006519668532.html ) E(Ethernet) or W(WiFi6) version, for Minimal Home Assistant
2026-02-10 07:54:59 +00:00
- $30~50 [NanoKVM ](https://www.aliexpress.com/item/1005007369816019.html ), or $100 [NanoKVM-Pro ](https://www.aliexpress.com/item/1005010048471263.html ) for Automated Server Maintenance
- $50 [MaixCAM ](https://www.aliexpress.com/item/1005008053333693.html ) or $100 [MaixCAM2 ](https://www.kickstarter.com/projects/zepan/maixcam2-build-your-next-gen-4k-ai-camera ) for Smart Monitoring
2026-02-04 11:06:13 +00:00
2026-02-11 23:53:16 +00:00
< https: / / private-user-images . githubusercontent . com / 83055338 / 547056448-e7b031ff-d6f5-4468-bcca-5726b6fecb5c . mp4 >
2026-02-04 11:06:13 +00:00
🌟 More Deployment Cases Await!
## 📦 Install
### Install with precompiled binary
Download the firmware for your platform from the [release ](https://github.com/sipeed/picoclaw/releases ) page.
### Install from source (latest features, recommended for development)
```bash
git clone https://github.com/sipeed/picoclaw.git
cd picoclaw
make deps
# Build, no need to install
make build
# Build for multiple platforms
make build-all
# Build And Install
make install
```
2026-02-10 11:34:08 +00:00
## 🐳 Docker Compose
You can also run PicoClaw using Docker Compose without installing anything locally.
```bash
# 1. Clone this repo
2026-02-12 16:24:52 +00:00
git clone https://github.com/sipeed/picoclaw.git
2026-02-10 11:34:08 +00:00
cd picoclaw
# 2. Set your API keys
2026-02-12 16:24:52 +00:00
cp config/config.example.json config/config.json
2026-02-11 15:44:10 +00:00
vim config/config.json # Set DISCORD_BOT_TOKEN, API keys, etc.
2026-02-10 11:34:08 +00:00
# 3. Build & Start
2026-02-11 15:44:10 +00:00
docker compose --profile gateway up -d
2026-02-10 11:34:08 +00:00
# 4. Check logs
2026-02-11 15:44:10 +00:00
docker compose logs -f picoclaw-gateway
2026-02-10 11:34:08 +00:00
# 5. Stop
2026-02-11 15:44:10 +00:00
docker compose --profile gateway down
2026-02-10 11:34:08 +00:00
```
### Agent Mode (One-shot)
```bash
# Ask a question
docker compose run --rm picoclaw-agent -m "What is 2+2?"
# Interactive mode
docker compose run --rm picoclaw-agent
```
### Rebuild
```bash
2026-02-11 15:44:10 +00:00
docker compose --profile gateway build --no-cache
docker compose --profile gateway up -d
2026-02-10 11:34:08 +00:00
```
2026-02-04 11:06:13 +00:00
### 🚀 Quick Start
> [!TIP]
> Set your API key in `~/.picoclaw/config.json`.
> Get API keys: [OpenRouter](https://openrouter.ai/keys) (LLM) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) (LLM)
2026-02-12 16:18:51 +00:00
> Web search is **optional** - get free [Brave Search API](https://brave.com/search/api) (2000 free queries/month) or use built-in auto fallback.
2026-02-04 11:06:13 +00:00
**1. Initialize**
```bash
picoclaw onboard
```
**2. Configure** (`~/.picoclaw/config.json`)
```json
{
"agents": {
"defaults": {
"workspace": "~/.picoclaw/workspace",
"model": "glm-4.7",
"max_tokens": 8192,
"temperature": 0.7,
"max_tool_iterations": 20
}
},
"providers": {
"openrouter": {
"api_key": "xxx",
2026-02-11 12:09:13 +00:00
"api_base": "https://openrouter.ai/api/v1"
2026-02-04 11:06:13 +00:00
}
},
"tools": {
"web": {
2026-02-13 09:12:55 +00:00
"brave": {
"enabled": false,
2026-02-04 11:06:13 +00:00
"api_key": "YOUR_BRAVE_API_KEY",
"max_results": 5
2026-02-13 09:12:55 +00:00
},
"duckduckgo": {
"enabled": true,
"max_results": 5
2026-02-04 11:06:13 +00:00
}
}
}
}
```
**3. Get API Keys**
2026-02-13 16:05:14 +00:00
* **LLM Provider**: [OpenRouter ](https://openrouter.ai/keys ) · [Zhipu ](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys ) · [Anthropic ](https://console.anthropic.com ) · [OpenAI ](https://platform.openai.com ) · [Gemini ](https://aistudio.google.com/api-keys )
* **Web Search** (optional): [Brave Search ](https://brave.com/search/api ) - Free tier available (2000 requests/month)
2026-02-04 11:06:13 +00:00
2026-02-09 11:53:49 +00:00
> **Note**: See `config.example.json` for a complete configuration template.
2026-02-04 11:06:13 +00:00
2026-02-11 12:09:13 +00:00
**4. Chat**
2026-02-04 11:06:13 +00:00
```bash
picoclaw agent -m "What is 2+2?"
```
That's it! You have a working AI assistant in 2 minutes.
---
## 💬 Chat Apps
2026-02-14 04:22:24 +00:00
Talk to your picoclaw through Telegram, Discord, DingTalk, or LINE
2026-02-04 11:06:13 +00:00
2026-02-14 04:22:24 +00:00
| Channel | Setup |
| ------------ | ---------------------------------- |
| **Telegram** | Easy (just a token) |
| **Discord** | Easy (bot token + intents) |
| **QQ** | Easy (AppID + AppSecret) |
| **DingTalk** | Medium (app credentials) |
| **LINE** | Medium (credentials + webhook URL) |
2026-02-04 11:06:13 +00:00
< details >
< summary > < b > Telegram< / b > (Recommended)< / summary >
**1. Create a bot**
2026-02-13 16:05:14 +00:00
* Open Telegram, search `@BotFather`
* Send `/newbot` , follow prompts
* Copy the token
2026-02-04 11:06:13 +00:00
**2. Configure**
```json
{
"channels": {
"telegram": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allowFrom": ["YOUR_USER_ID"]
}
}
}
```
> Get your user ID from `@userinfobot` on Telegram.
**3. Run**
```bash
picoclaw gateway
```
2026-02-11 23:53:16 +00:00
< / details >
2026-02-04 11:06:13 +00:00
< details >
< summary > < b > Discord< / b > < / summary >
**1. Create a bot**
2026-02-11 23:53:16 +00:00
2026-02-13 16:05:14 +00:00
* Go to < https: // discord . com / developers / applications >
* Create an application → Bot → Add Bot
* Copy the bot token
2026-02-04 11:06:13 +00:00
**2. Enable intents**
2026-02-11 23:53:16 +00:00
2026-02-13 16:05:14 +00:00
* In the Bot settings, enable **MESSAGE CONTENT INTENT**
* (Optional) Enable **SERVER MEMBERS INTENT** if you plan to use allow lists based on member data
2026-02-04 11:06:13 +00:00
**3. Get your User ID**
2026-02-11 23:53:16 +00:00
2026-02-13 16:05:14 +00:00
* Discord Settings → Advanced → enable **Developer Mode**
* Right-click your avatar → **Copy User ID**
2026-02-04 11:06:13 +00:00
**4. Configure**
```json
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allowFrom": ["YOUR_USER_ID"]
}
}
}
```
**5. Invite the bot**
2026-02-11 23:53:16 +00:00
2026-02-13 16:05:14 +00:00
* OAuth2 → URL Generator
* Scopes: `bot`
* Bot Permissions: `Send Messages` , `Read Message History`
* Open the generated invite URL and add the bot to your server
2026-02-04 11:06:13 +00:00
**6. Run**
```bash
2026-02-10 01:46:07 +00:00
picoclaw gateway
```
< / details >
< details >
< summary > < b > QQ< / b > < / summary >
**1. Create a bot**
2026-02-14 04:43:44 +00:00
- Go to [QQ Open Platform ](https://q.qq.com/# )
2026-02-10 01:46:07 +00:00
- Create an application → Get **AppID** and **AppSecret**
**2. Configure**
```json
{
"channels": {
"qq": {
"enabled": true,
"app_id": "YOUR_APP_ID",
"app_secret": "YOUR_APP_SECRET",
"allow_from": []
}
}
}
2026-02-04 11:06:13 +00:00
```
2026-02-10 01:46:07 +00:00
> Set `allow_from` to empty to allow all users, or specify QQ numbers to restrict access.
**3. Run**
```bash
picoclaw gateway
```
2026-02-11 23:53:16 +00:00
2026-02-04 11:06:13 +00:00
< / details >
2026-02-10 13:33:55 +00:00
< details >
< summary > < b > DingTalk< / b > < / summary >
**1. Create a bot**
2026-02-13 16:05:14 +00:00
* Go to [Open Platform ](https://open.dingtalk.com/ )
* Create an internal app
* Copy Client ID and Client Secret
2026-02-10 13:33:55 +00:00
**2. Configure**
```json
{
"channels": {
"dingtalk": {
"enabled": true,
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET",
"allow_from": []
}
}
}
```
2026-02-11 11:47:11 +00:00
> Set `allow_from` to empty to allow all users, or specify QQ numbers to restrict access.
2026-02-10 13:33:55 +00:00
**3. Run**
```bash
picoclaw gateway
```
2026-02-11 23:53:16 +00:00
2026-02-10 13:33:55 +00:00
< / details >
2026-02-14 04:22:24 +00:00
< details >
< summary > < b > LINE< / b > < / summary >
**1. Create a LINE Official Account**
- Go to [LINE Developers Console ](https://developers.line.biz/ )
- Create a provider → Create a Messaging API channel
- Copy **Channel Secret** and **Channel Access Token**
**2. Configure**
```json
{
"channels": {
"line": {
"enabled": true,
"channel_secret": "YOUR_CHANNEL_SECRET",
"channel_access_token": "YOUR_CHANNEL_ACCESS_TOKEN",
"webhook_host": "0.0.0.0",
"webhook_port": 18791,
"webhook_path": "/webhook/line",
"allow_from": []
}
}
}
```
**3. Set up Webhook URL**
LINE requires HTTPS for webhooks. Use a reverse proxy or tunnel:
```bash
# Example with ngrok
ngrok http 18791
```
Then set the Webhook URL in LINE Developers Console to `https://your-domain/webhook/line` and enable **Use webhook** .
**4. Run**
```bash
picoclaw gateway
```
> In group chats, the bot responds only when @mentioned. Replies quote the original message.
> **Docker Compose**: Add `ports: ["18791:18791"]` to the `picoclaw-gateway` service to expose the webhook port.
< / details >
2026-02-12 14:53:04 +00:00
## <img src="assets/clawdchat-icon.png" width="24" height="24" alt="ClawdChat"> Join the Agent Social Network
Connect Picoclaw to the Agent Social Network simply by sending a single message via the CLI or any integrated Chat App.
**Read `https://clawdchat.ai/skill.md` and follow the instructions to join [ClawdChat.ai ](https://clawdchat.ai )**
2026-02-04 11:06:13 +00:00
## ⚙️ Configuration
Config file: `~/.picoclaw/config.json`
2026-02-11 12:22:41 +00:00
### Workspace Layout
PicoClaw stores data in your configured workspace (default: `~/.picoclaw/workspace` ):
```
~/.picoclaw/workspace/
├── sessions/ # Conversation sessions and history
├── memory/ # Long-term memory (MEMORY.md)
2026-02-13 07:19:37 +00:00
├── state/ # Persistent state (last channel, etc.)
2026-02-11 12:22:41 +00:00
├── cron/ # Scheduled jobs database
├── skills/ # Custom skills
├── AGENTS.md # Agent behavior guide
2026-02-13 07:19:37 +00:00
├── HEARTBEAT.md # Periodic task prompts (checked every 30 min)
2026-02-11 12:22:41 +00:00
├── IDENTITY.md # Agent identity
├── SOUL.md # Agent soul
├── TOOLS.md # Tool descriptions
└── USER.md # User preferences
```
2026-02-13 11:33:21 +00:00
### 🔒 Security Sandbox
PicoClaw runs in a sandboxed environment by default. The agent can only access files and execute commands within the configured workspace.
#### Default Configuration
```json
{
"agents": {
"defaults": {
"workspace": "~/.picoclaw/workspace",
"restrict_to_workspace": true
}
}
}
```
| Option | Default | Description |
|--------|---------|-------------|
| `workspace` | `~/.picoclaw/workspace` | Working directory for the agent |
| `restrict_to_workspace` | `true` | Restrict file/command access to workspace |
#### Protected Tools
When `restrict_to_workspace: true` , the following tools are sandboxed:
| Tool | Function | Restriction |
|------|----------|-------------|
| `read_file` | Read files | Only files within workspace |
| `write_file` | Write files | Only files within workspace |
| `list_dir` | List directories | Only directories within workspace |
| `edit_file` | Edit files | Only files within workspace |
| `append_file` | Append to files | Only files within workspace |
| `exec` | Execute commands | Command paths must be within workspace |
#### Additional Exec Protection
Even with `restrict_to_workspace: false` , the `exec` tool blocks these dangerous commands:
2026-02-13 16:05:14 +00:00
* `rm -rf` , `del /f` , `rmdir /s` — Bulk deletion
* `format` , `mkfs` , `diskpart` — Disk formatting
* `dd if=` — Disk imaging
* Writing to `/dev/sd[a-z]` — Direct disk writes
* `shutdown` , `reboot` , `poweroff` — System shutdown
* Fork bomb `:(){ :|:& };:`
2026-02-13 11:33:21 +00:00
#### Error Examples
```
[ERROR] tool: Tool execution failed
{tool=exec, error=Command blocked by safety guard (path outside working dir)}
```
```
[ERROR] tool: Tool execution failed
{tool=exec, error=Command blocked by safety guard (dangerous pattern detected)}
```
#### Disabling Restrictions (Security Risk)
If you need the agent to access paths outside the workspace:
**Method 1: Config file**
2026-02-13 16:05:14 +00:00
2026-02-13 11:33:21 +00:00
```json
{
"agents": {
"defaults": {
"restrict_to_workspace": false
}
}
}
```
**Method 2: Environment variable**
2026-02-13 16:05:14 +00:00
2026-02-13 11:33:21 +00:00
```bash
export PICOCLAW_AGENTS_DEFAULTS_RESTRICT_TO_WORKSPACE=false
```
> ⚠️ **Warning**: Disabling this restriction allows the agent to access any path on your system. Use with caution in controlled environments only.
#### Security Boundary Consistency
The `restrict_to_workspace` setting applies consistently across all execution paths:
| Execution Path | Security Boundary |
|----------------|-------------------|
| Main Agent | `restrict_to_workspace` ✅ |
| Subagent / Spawn | Inherits same restriction ✅ |
| Heartbeat tasks | Inherits same restriction ✅ |
All paths share the same workspace restriction — there's no way to bypass the security boundary through subagents or scheduled tasks.
2026-02-13 07:19:37 +00:00
### Heartbeat (Periodic Tasks)
PicoClaw can perform periodic tasks automatically. Create a `HEARTBEAT.md` file in your workspace:
```markdown
# Periodic Tasks
- Check my email for important messages
- Review my calendar for upcoming events
- Check the weather forecast
```
The agent will read this file every 30 minutes (configurable) and execute any tasks using available tools.
#### Async Tasks with Spawn
For long-running tasks (web search, API calls), use the `spawn` tool to create a **subagent** :
```markdown
# Periodic Tasks
## Quick Tasks (respond directly)
- Report current time
## Long Tasks (use spawn for async)
- Search the web for AI news and summarize
- Check email and report important messages
```
**Key behaviors:**
| Feature | Description |
|---------|-------------|
| **spawn** | Creates async subagent, doesn't block heartbeat |
| **Independent context** | Subagent has its own context, no session history |
| **message tool** | Subagent communicates with user directly via message tool |
| **Non-blocking** | After spawning, heartbeat continues to next task |
#### How Subagent Communication Works
```
Heartbeat triggers
↓
Agent reads HEARTBEAT.md
↓
For long task: spawn subagent
↓ ↓
Continue to next task Subagent works independently
↓ ↓
All tasks done Subagent uses "message" tool
↓ ↓
Respond HEARTBEAT_OK User receives result directly
```
The subagent has access to tools (message, web_search, etc.) and can communicate with the user independently without going through the main agent.
**Configuration:**
```json
{
"heartbeat": {
"enabled": true,
"interval": 30
}
}
```
| Option | Default | Description |
|--------|---------|-------------|
| `enabled` | `true` | Enable/disable heartbeat |
| `interval` | `30` | Check interval in minutes (min: 5) |
**Environment variables:**
2026-02-13 16:05:14 +00:00
* `PICOCLAW_HEARTBEAT_ENABLED=false` to disable
* `PICOCLAW_HEARTBEAT_INTERVAL=60` to change interval
2026-02-13 07:19:37 +00:00
2026-02-04 11:06:13 +00:00
### Providers
> [!NOTE]
> Groq provides free voice transcription via Whisper. If configured, Telegram voice messages will be automatically transcribed.
2026-02-12 16:18:51 +00:00
| Provider | Purpose | Get API Key |
| -------------------------- | --------------------------------------- | ------------------------------------------------------ |
| `gemini` | LLM (Gemini direct) | [aistudio.google.com ](https://aistudio.google.com ) |
| `zhipu` | LLM (Zhipu direct) | [bigmodel.cn ](bigmodel.cn ) |
| `openrouter(To be tested)` | LLM (recommended, access to all models) | [openrouter.ai ](https://openrouter.ai ) |
| `anthropic(To be tested)` | LLM (Claude direct) | [console.anthropic.com ](https://console.anthropic.com ) |
| `openai(To be tested)` | LLM (GPT direct) | [platform.openai.com ](https://platform.openai.com ) |
| `deepseek(To be tested)` | LLM (DeepSeek direct) | [platform.deepseek.com ](https://platform.deepseek.com ) |
| `groq` | LLM + **Voice transcription** (Whisper) | [console.groq.com ](https://console.groq.com ) |
2026-02-04 11:06:13 +00:00
2026-02-15 13:04:16 +00:00
### Provider Architecture
PicoClaw routes providers by protocol family:
- OpenAI-compatible protocol: OpenRouter, OpenAI-compatible gateways, Groq, Zhipu, and vLLM-style endpoints.
- Anthropic protocol: Claude-native API behavior.
- Codex/OAuth path: OpenAI OAuth/token authentication route.
This keeps the runtime lightweight while making new OpenAI-compatible backends mostly a config operation (`api_base` + `api_key` ).
2026-02-04 11:06:13 +00:00
< details >
< summary > < b > Zhipu< / b > < / summary >
**1. Get API key and base URL**
2026-02-11 23:53:16 +00:00
2026-02-13 16:05:14 +00:00
* Get [API key ](https://bigmodel.cn/usercenter/proj-mgmt/apikeys )
2026-02-04 11:06:13 +00:00
**2. Configure**
```json
{
"agents": {
"defaults": {
"workspace": "~/.picoclaw/workspace",
"model": "glm-4.7",
"max_tokens": 8192,
"temperature": 0.7,
"max_tool_iterations": 20
}
},
"providers": {
"zhipu": {
"api_key": "Your API Key",
"api_base": "https://open.bigmodel.cn/api/paas/v4"
2026-02-12 16:18:51 +00:00
}
}
2026-02-04 11:06:13 +00:00
}
```
**3. Run**
```bash
picoclaw agent -m "Hello"
```
2026-02-11 23:53:16 +00:00
2026-02-04 11:06:13 +00:00
< / details >
< details >
< summary > < b > Full config example< / b > < / summary >
```json
{
"agents": {
"defaults": {
"model": "anthropic/claude-opus-4-5"
}
},
"providers": {
"openrouter": {
2026-02-11 12:09:13 +00:00
"api_key": "sk-or-v1-xxx"
2026-02-04 11:06:13 +00:00
},
"groq": {
2026-02-11 12:09:13 +00:00
"api_key": "gsk_xxx"
2026-02-04 11:06:13 +00:00
}
},
"channels": {
"telegram": {
"enabled": true,
"token": "123456:ABC...",
2026-02-11 12:09:13 +00:00
"allow_from": ["123456789"]
2026-02-04 11:06:13 +00:00
},
"discord": {
"enabled": true,
"token": "",
"allow_from": [""]
},
"whatsapp": {
"enabled": false
},
"feishu": {
"enabled": false,
2026-02-11 12:09:13 +00:00
"app_id": "cli_xxx",
"app_secret": "xxx",
"encrypt_key": "",
"verification_token": "",
"allow_from": []
2026-02-10 01:46:07 +00:00
},
"qq": {
"enabled": false,
"app_id": "",
"app_secret": "",
"allow_from": []
2026-02-04 11:06:13 +00:00
}
},
"tools": {
"web": {
2026-02-13 09:12:55 +00:00
"brave": {
"enabled": false,
"api_key": "BSA...",
"max_results": 5
},
"duckduckgo": {
"enabled": true,
"max_results": 5
2026-02-04 11:06:13 +00:00
}
}
2026-02-13 07:19:37 +00:00
},
"heartbeat": {
"enabled": true,
"interval": 30
2026-02-04 11:06:13 +00:00
}
}
```
< / details >
## CLI Reference
2026-02-12 16:18:51 +00:00
| Command | Description |
| ------------------------- | ----------------------------- |
| `picoclaw onboard` | Initialize config & workspace |
| `picoclaw agent -m "..."` | Chat with the agent |
| `picoclaw agent` | Interactive chat mode |
| `picoclaw gateway` | Start the gateway |
| `picoclaw status` | Show status |
| `picoclaw cron list` | List all scheduled jobs |
| `picoclaw cron add ...` | Add a scheduled job |
2026-02-11 12:22:41 +00:00
### Scheduled Tasks / Reminders
PicoClaw supports scheduled reminders and recurring tasks through the `cron` tool:
2026-02-13 16:05:14 +00:00
* **One-time reminders**: "Remind me in 10 minutes" → triggers once after 10min
* **Recurring tasks**: "Remind me every 2 hours" → triggers every 2 hours
* **Cron expressions**: "Remind me at 9am daily" → uses cron expression
2026-02-11 12:22:41 +00:00
Jobs are stored in `~/.picoclaw/workspace/cron/` and processed automatically.
2026-02-04 11:06:13 +00:00
## 🤝 Contribute & Roadmap
PRs welcome! The codebase is intentionally small and readable. 🤗
2026-02-13 12:20:33 +00:00
Roadmap coming soon...
Developer group building, Entry Requirement: At least 1 Merged PR.
User Groups:
2026-02-11 23:53:16 +00:00
discord: < https: / / discord . gg / V4sAZ9XWpN >
2026-02-09 14:12:15 +00:00
2026-02-09 13:36:11 +00:00
< img src = "assets/wechat.png" alt = "PicoClaw" width = "512" >
2026-02-04 11:06:13 +00:00
## 🐛 Troubleshooting
### Web search says "API 配置问题"
This is normal if you haven't configured a search API key yet. PicoClaw will provide helpful links for manual searching.
To enable web search:
2026-02-11 23:53:16 +00:00
2026-02-12 16:18:51 +00:00
1. **Option 1 (Recommended)** : Get a free API key at [https://brave.com/search/api ](https://brave.com/search/api ) (2000 free queries/month) for the best results.
2. **Option 2 (No Credit Card)** : If you don't have a key, we automatically fall back to **DuckDuckGo** (no key required).
Add the key to `~/.picoclaw/config.json` if using Brave:
```json
{
"tools": {
"web": {
2026-02-13 09:12:55 +00:00
"brave": {
"enabled": false,
2026-02-12 16:18:51 +00:00
"api_key": "YOUR_BRAVE_API_KEY",
"max_results": 5
2026-02-13 09:12:55 +00:00
},
"duckduckgo": {
"enabled": true,
"max_results": 5
2026-02-12 16:18:51 +00:00
}
}
}
}
```
2026-02-04 11:06:13 +00:00
### Getting content filtering errors
Some providers (like Zhipu) have content filtering. Try rephrasing your query or use a different model.
### Telegram bot says "Conflict: terminated by other getUpdates"
This happens when another instance of the bot is running. Make sure only one `picoclaw gateway` is running at a time.
---
## 📝 API Key Comparison
2026-02-12 16:18:51 +00:00
| Service | Free Tier | Use Case |
| ---------------- | ------------------- | ------------------------------------- |
| **OpenRouter** | 200K tokens/month | Multiple models (Claude, GPT-4, etc.) |
| **Zhipu** | 200K tokens/month | Best for Chinese users |
| **Brave Search** | 2000 queries/month | Web search functionality |
| **Groq** | Free tier available | Fast inference (Llama, Mixtral) |