afjcjsbx/picoclaw
afjcjsbx/picoclaw has 49 GitHub stars and 15 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-10 01:24 UTC. Last push 2026-11-07.
Ultra-lightweight, open-source, self-hosted personal AI assistant in Go for RISC-V, SBCs, and embedded systems. Active PicoClaw fork with WebUI, MCP, memory, multi-agent workflows, plugins, and chat apps.
What you can do
- 🪶 Featherweight10–20 MB of RAM in recent builds — small enough for a $10 board. - ⚡ Instant startupReady in under a second, even on a 0.6 GHz single-core processor.
- 💰 Minimal costRuns on hardware that costs 98% less than a Mac mini. - 🌍 One binary everywhereRISC-V, ARM, MIPS, x86-64, and LoongArch — the same single executable.
- 🔌 MCP nativeConnect any Model Context Protocol server to extend the agent. - 🧩 Agent Plugins 1.0.0Package skills and MCP servers into portable, installable plugins.
- 👁️ Vision pipelineSend images and files directly to multimodal LLMs with automatic base64 encoding. - 🧠 Smart routingRule-based model routing sends simple queries to cheaper, faster models.
Measured star growth
- in 24h
- +1
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
PicoClaw
The featherweight AI agent that fits anywhere.
Small on purpose. Small is not lesser. Small is enough.
English | 中文
What is PicoClaw?
PicoClaw is an ultra-lightweight personal AI assistant written entirely in Go — not a fork of OpenClaw, NanoBot, or any other agent framework. Inspired by NanoBot, it was rebuilt from the ground up through a "self-bootstrapping" process: the agent itself drove the architecture migration and code optimization.
This repository is the actively maintained, community-driven continuation of sipeed/picoclaw, with ongoing fixes, dependency updates, and new features.
Maintenance status
Upstream sipeed/picoclaw |
This fork | |
|---|---|---|
| Latest release | ||
Last commit on main |
The badges are rendered by shields.io from GitHub, so the table updates automatically. Upstream still receives issue and pull-request activity; the badges describe release and main-branch activity, not whether the upstream project is archived.
See maintenance status for the current comparison and migration notes if you are switching from upstream.
Runs on $10 hardware. Uses 10–20 MB of RAM. Boots in under a second.
Don't let your old hardware gather dust in the basement — give it a second life with PicoClaw!
Features
| 🪶 Featherweight 10–20 MB of RAM in recent builds — small enough for a $10 board. |
⚡ Instant startup Ready in under a second, even on a 0.6 GHz single-core processor. |
| 💰 Minimal cost Runs on hardware that costs 98% less than a Mac mini. |
🌍 One binary everywhere RISC-V, ARM, MIPS, x86-64, and LoongArch — the same single executable. |
| 🔌 MCP native Connect any Model Context Protocol server to extend the agent. |
🧩 Agent Plugins 1.0.0 Package skills and MCP servers into portable, installable plugins. |
| 👁️ Vision pipeline Send images and files directly to multimodal LLMs with automatic base64 encoding. |
🧠 Smart routing Rule-based model routing sends simple queries to cheaper, faster models. |
| 💬 19+ chat channels Telegram, Discord, Slack, WhatsApp, Matrix, WeChat, and many more. |
🔗 30+ providers OpenAI, Anthropic, Gemini, OpenRouter, DeepSeek, local models, and more. |
How it compares
| OpenClaw | NanoBot | PicoClaw | |
|---|---|---|---|
| Language | TypeScript | Python | Go |
| RAM reference | 2 GB host RAM recommended | ~200–600 MB reported | 10–20 MB in recent builds |
| Single executable | No (Node.js app) | No (Python app with native TUI component) | 48.1 MiB |
| Boot time (0.8 GHz core) |
>500 s | >30 s | <1 s |
| Cost | Mac mini $599 | Most Linux boards ~$50 | Any Linux board from $10 |
These are reference figures, not a controlled benchmark. OpenClaw's value is a deployment recommendation, NanoBot's is a single Raspberry Pi 4 user report, and PicoClaw's is the estimate for recent builds. OpenClaw and NanoBot do not ship the complete agent as one executable; PicoClaw's size is the measured full default macOS ARM64 build — see the measurement method and other profiles.
Runtime footprint
| Tool | Runtime | Install size | First paint / ready | Idle RSS | Processes |
|---|---|---|---|---|---|
| PicoClaw (core) | Go 1.27, single static binary | 48.1 MiB | ≈66 ms | 37.9 MiB | 1 |
| Claude Code 2.1.300 | Bun-compiled TS (native binary) | 240 MiB | ≈263 ms | ≈184 MiB | 1 |
| pi 1.2.0 | Bun-compiled TS + pi-tui | 148 MiB | ≈369 ms | ≈169 MiB | 1 |
| OpenCode 2.0.29 | Bun + OpenTUI | 239 MiB | ≈190 ms | ≈200 MiB | 1 |
| Hermes 0.22.1 | Python + TUI | ≈1.9 GiB | ≈3.2 s | ≈214 MiB | 2 |
PicoClaw's idle RSS is 37.9 MiB, with a memory footprint of ≈19 MiB (phys_footprint, what Activity Monitor reports) — the metric behind the "10–20 MB" figure above. Its core ships no full-screen TUI, so "first paint / ready" is the time for the gateway to answer GET /ready. Lighter channel profiles are listed in measured binary sizes.
Benchmark methodology
Measured on an Apple M1 Max (macOS arm64) with the scripts in scripts/. PicoClaw's figures use Go 1.27.3 and were refreshed on 2026-10-26; the other tools were measured on 2026-10-15. First paint / ready, idle RSS, and processes come from the scripts; install size is the size of each tool's own installation and is not measured by these scripts. Idle RSS is the resident set summed across the process tree once it is idle. The other agents are interactive TUIs and their figures are single-machine medians of a few runs, so expect drift between releases.
Reproduce the runtime columns with:
python3 scripts/bench-picoclaw-runtime.py --binary ./build/picoclaw --runs 15
python3 scripts/bench-agent-tui.py --cmd opencode --runs 3 --keys '\x03'
Hardware Compatibility List — Tested boards from $5 RISC-V devices to Raspberry Pi and Android phones. Your board is missing? Submit a PR!
Install
One-line install (Linux & macOS)
curl -fsSL https://raw.githubusercontent.com/afjcjsbx/picoclaw/main/scripts/install.sh | sh
Windows PowerShell
irm https://raw.githubusercontent.com/afjcjsbx/picoclaw/main/scripts/install.ps1 | iex
The installer detects the CPU architecture, verifies the release checksum, installs both binaries, and starts the launcher. The Web UI opens at http://localhost:18800; on first run, create the dashboard password in the browser.
Precompiled binaries
Download the binary for your platform from GitHub Releases.
Build from source
Prerequisites:
- Go 1.27.3+
- Node.js 22+ and pnpm 10.33.0+ for Web UI and launcher builds
git clone https://github.com/afjcjsbx/picoclaw.git
cd picoclaw
make deps
# Install frontend dependencies
(cd web/frontend && pnpm install --frozen-lockfile)
# Build the core binary for the current platform
make build
# Build the Web UI Launcher (required for Web UI mode)
make build-launcher
# Build core binaries for all Makefile-managed platforms
make build-all
# Build a single target (used by the CI matrix)
make build-target TARGET=linux/arm64
make build-target TARGET=linux/arm GOARM=7
# Build for Raspberry Pi Zero 2 W
make build-pi-zero
# Build and install
make install
Raspberry Pi Zero 2 W: use the binary that matches your OS — 32-bit Raspberry Pi OS: make build-linux-arm; 64-bit: make build-linux-arm64. Or run make build-pi-zero to build both.
Custom channel builds
The default build includes every channel. Custom channel selection, optional Seahorse builds, SQLite caveats, and measured binary sizes are documented in the Custom Builds Guide. For example, this builds with Telegram only:
make build GO_BUILD_TAGS='goolm,stdjson,custom_channels,channel_telegram'
Seahorse is PicoClaw's built-in memory system: the seahorse context manager keeps a local SQLite database with an FTS5 index over the session history, so the agent can recall and compact older context. To shrink the footprint further, build without it using the no_seahorse tag, which also drops the SQLite dependency when no other selected feature needs it:
make build GO_BUILD_TAGS='goolm,stdjson,custom_channels,channel_telegram,no_seahorse'
That is the right choice when an external system provides memory instead, for example the Mem0 plugin. In the measured macOS ARM64 Telegram-only build, adding no_seahorse reduced the binary by 4.00 MiB (10.0%). See the guide for full measurement details and the cases where Matrix or WhatsApp Native still require SQLite.
Quick start
Web UI Launcher (recommended)
The Web UI Launcher provides a browser-based interface for configuration and chat. It is the easiest way to get started — no command-line knowledge required.
Option 1: double-click (desktop)
After downloading from GitHub Releases, double-click picoclaw-launcher (or picoclaw-launcher.exe on Windows). Your browser opens automatically at http://localhost:18800.
Option 2: command line
picoclaw-launcher
# Open http://localhost:18800 in your browser
[!TIP] Remote access / Docker / VM: add the
-publicflag to listen on all interfaces:picoclaw-launcher -public
Getting started: open the Web UI, then 1) configure a provider (add your LLM API key) → 2) configure a channel (e.g. Telegram) → 3) start the gateway → 4) chat.
For detailed documentation, see the Web UI & Launcher Guide.
Docker (alternative)
# 1. Clone this repo
git clone https://github.com/afjcjsbx/picoclaw.git
cd picoclaw
# 2. First run — auto-generates docker/data/config.json then exits
# (only triggers when both config.json and workspace/ are missing)
docker compose -f docker/docker-compose.yml --profile launcher up
# The container prints "First-run setup complete." and stops.
# 3. Set your API keys
vim docker/data/config.json
# 4. Start
docker compose -f docker/docker-compose.yml --profile launcher up -d
# Open http://localhost:18800
Docker / VM users: the gateway listens on
127.0.0.1by default. SetPICOCLAW_GATEWAY_HOST=0.0.0.0or use the-publicflag to make it accessible from the host.
# Check logs
docker compose -f docker/docker-compose.yml logs -f
# Stop
docker compose -f docker/docker-compose.yml --profile launcher down
# Update
docker compose -f docker/docker-compose.yml pull
docker compose -f docker/docker-compose.yml --profile launcher up -d
macOS: first-launch security warning
macOS may block picoclaw-launcher on first launch because it is downloaded from the internet and not notarized through the Mac App Store.
- Double-click
picoclaw-launcher. macOS shows a security warning: "picoclaw-launcher" Not Opened — Apple could not verify "picoclaw-launcher" is free of malware that may harm your Mac or compromise your privacy. - Open System Settings → Privacy & Security, scroll to the Security section, click Open Anyway, then confirm Open Anyway in the dialog.
After this one-time step, picoclaw-launcher opens normally on subsequent launches.
Providers
30+ supported LLM providers and configuration
PicoClaw supports 30+ LLM providers through the model_list configuration. Use the protocol/model format:
| Provider | Protocol | API Key | Notes |
|---|---|---|---|
| OpenAI | openai/ |
Required | GPT-5.4, GPT-4o, o3, etc. |
| Anthropic | anthropic/ |
Required | Claude Opus 4.6, Sonnet 4.6, etc. |
| Google Gemini | gemini/ |
Required | Gemini 3 Flash, 2.5 Pro, etc. |
| OpenRouter | openrouter/ |
Required | 200+ models, unified API |
| Zhipu (GLM) | zhipu/ |
Required | GLM-4.7, GLM-5, etc. |
| DeepSeek | deepseek/ |
Required | DeepSeek-V3, DeepSeek-R1 |
| Volcengine | volcengine/ |
Required | Doubao, Ark models |
| Qwen | qwen/ |
Required | Qwen3, Qwen-Max, etc. |
| Groq | groq/ |
Required | Fast inference (Llama, Mixtral) |
| Moonshot (Kimi) | moonshot/ |
Required | Kimi models |
| Minimax | minimax/ |
Required | MiniMax models |
| Mistral | mistral/ |
Required | Mistral Large, Codestral |
| NVIDIA NIM | nvidia/ |
Required | NVIDIA hosted models |
| Cerebras | cerebras/ |
Required | Fast inference |
| NEAR AI Cloud | nearai/ |
Required | TEE inference, OpenAI-compatible |
| Novita AI | novita/ |
Required | Various open models |
| Xiaomi MiMo | mimo/ |
Required | MiMo models |
| Ollama | ollama/ |
Not needed | Local models, self-hosted |
| vLLM | vllm/ |
Not needed | Local deployment, OpenAI-compatible |
| LiteLLM | litellm/ |
Varies | Proxy for 100+ providers |
| Azure OpenAI | azure/ |
API key or Entra ID** | Enterprise Azure deployment |
| GitHub Copilot | github-copilot/ |
OAuth | Device code login |
| Antigravity | antigravity/ |
OAuth | Google Cloud AI |
| AWS Bedrock* | bedrock/ |
AWS credentials | Claude, Llama, Mistral on AWS |
* AWS Bedrock requires build tag:
go build -tags bedrock. Setapi_baseto a region name (e.g.us-east-1) for automatic endpoint resolution across all AWS partitions (aws, aws-cn, aws-us-gov). When using a full endpoint URL instead, you must also configureAWS_REGIONvia environment variable or AWS config/profile.** Azure OpenAI uses
api_keywhen set. Ifapi_keyis omitted, the provider falls back to Microsoft Entra ID viaDefaultAzureCredential(env vars, workload identity, managed identity, Azure CLI, etc.). The Entra ID path requires build tag:go build -tags azidentity.
Local deployment (Ollama, vLLM, etc.)
Ollama:
{
"model_list": [
{
"model_name": "local-llama",
"model": "ollama/llama3.1:8b",
"api_base": "http://localhost:11434/v1"
}
]
}
vLLM:
{
"model_list": [
{
"model_name": "local-vllm",
"model": "vllm/your-model",
"api_base": "http://localhost:8000/v1"
}
]
}
For full provider configuration details, see Providers & Models.
Channels
19+ chat platforms and setup guides
Talk to your PicoClaw through 19+ messaging platforms:
| Channel | Setup | Protocol | Docs |
|---|---|---|---|
| Telegram | Easy (bot token) | Long polling | Guide |
| Discord | Easy (bot token + intents) | WebSocket | Guide |
| Easy (QR scan or bridge URL) | Native / Bridge | Guide | |
| Weixin | Easy (Native QR scan) | iLink API | Guide |
| Easy (AppID + AppSecret) | WebSocket | Guide | |
| Slack | Easy (bot + app token) | Socket Mode | Guide |
| Matrix | Medium (homeserver + token) | Sync API | Guide |
| Delta Chat | Easy (chatmail or existing account) | JSON-RPC (email/E2EE) | Guide |
| DingTalk | Medium (client credentials) | Stream | Guide |
| Feishu / Lark | Medium (App ID + Secret) | WebSocket/SDK | Guide |
| LINE | Medium (credentials + webhook) | Webhook | Guide |
| WeCom | Easy (QR login or manual) | WebSocket | Guide |
| VK | Easy (group token) | Long Poll | Guide |
| IRC | Medium (server + nick) | IRC protocol | Guide |
| OneBot | Medium (WebSocket URL) | OneBot v11 | Guide |
| MQTT | Easy (broker + agent_id) | MQTT pub/sub | Guide |
| MaixCam | Easy (enable) | TCP socket | Guide |
| Pico | Easy (enable) | Native protocol | Built-in |
| Pico Client | Easy (WebSocket URL) | WebSocket | Built-in |
All webhook-based channels share a single Gateway HTTP server (
gateway.host:gateway.port, default127.0.0.1:18790). Feishu uses WebSocket/SDK mode and does not use the shared HTTP server.
Log verbosity is controlled by
gateway.log_level(default:warn). Supported values:debug,info,warn,error,fatal. It can also be set viaPICOCLAW_LOG_LEVEL. See Configuration for details.
For detailed channel setup instructions, see Chat Apps Configuration.
Tools
Web search
Supported search engines and free tiers
PicoClaw can search the web to provide up-to-date information. Configure it in tools.web:
| Search Engine | API Key | Free Tier | Link |
|---|---|---|---|
| DuckDuckGo | Not needed | Unlimited | Built-in fallback |
| Gemini Google Search | Required | Varies | Gemini with Google Search grounding |
| Baidu Search | Required | 1500/month (daily allocation) | AI-powered, China-optimized |
| Tavily | Required | 1000 queries/month | Optimized for AI agents |
| Brave Search | Required | 2000 queries/month | Fast and private |
| Kagi Search | Required | Paid/limited by API setup | Premium search results |
| Keenable | Optional | Keyless: 10 req/s, 1000/hour per IP | Works without a key; a key lifts the rate limits |
| Perplexity | Required | Paid | AI-powered search |
| SearXNG | Not needed | Self-hosted | Free metasearch engine |
| GLM Search | Required | Varies | Zhipu web search |
Other tools
PicoClaw includes built-in tools for file operations, code execution, scheduling, and more. See Tools for details.
Skills
Skills are modular capabilities that extend your agent. They are loaded from SKILL.md files in your workspace.
Install skills from ClawHub:
picoclaw skills search "web scraping"
picoclaw skills install <skill-name>
Configure skill registries under tools.skills.registries:
{
"tools": {
"skills": {
"registries": {
"clawhub": {
"enabled": true,
"base_url": "https://clawhub.ai",
"auth_token": "your-clawhub-token"
},
"github": {
"enabled": true,
"base_url": "https://github.com",
"auth_token": "your-github-token",
"proxy": ""
}
}
}
}
}
The ClawHub token is optional and only raises the rate limit. The GitHub token is needed for searches and for private repositories. Pass them via PICOCLAW_SKILLS_REGISTRIES_CLAWHUB_AUTH_TOKEN and PICOCLAW_SKILLS_REGISTRIES_GITHUB_AUTH_TOKEN.
Skills and MCP servers can also be packaged together as portable Agent Plugins 1.0.0. See the plugin guide and the working demo plugin. Mem0 publishes its own Agent Plugin; read the compatibility notes before enabling it.
For more details, see Skills tools.
MCP (Model Context Protocol)
PicoClaw natively supports MCP — connect any MCP server to extend your agent's capabilities with external tools and data sources.
PicoClaw is a lightweight assistant, so remote MCP servers are the best choice. For local servers, prefer natively compiled server binaries and avoid npx, uvx, or other heavyweight dependency managers.
{
"tools": {
"mcp": {
"enabled": true,
"servers": {
"browserbase": {
"enabled": true,
"deferred": false,
"command": "",
"type": "http",
"url": "https://mcp.browserbase.com/mcp?browserbaseApiKey=API_KEY",
"headers": {
"BROWSERBASE_PROJECT_ID": "********"
}
}
}
}
}
}
You can manage common MCP setups directly from the CLI instead of editing JSON by hand:
picoclaw mcp list
picoclaw mcp test browserbase
picoclaw mcp is a configuration manager: it updates config.json under tools.mcp.servers, but it does not keep the server process running itself.
Use picoclaw mcp edit when you need advanced fields that are not covered by picoclaw mcp add. For example, picoclaw mcp add supports --deferred and --env-file, while picoclaw mcp edit is still useful for direct JSON editing and uncommon MCP settings.
For full MCP configuration (stdio, SSE, HTTP transports, tool discovery), see MCP tools. For CLI usage and examples, see MCP Server CLI.
Join the Agent Social Network
Connect PicoClaw to the Agent Social Network by sending a single message via the CLI or any integrated chat app:
Read
https://clawdchat.ai/skill.mdand follow the instructions to join ClawdChat.ai.
CLI reference
| Command | Description |
|---|---|
picoclaw onboard |
Initialize config and workspace |
picoclaw auth weixin |
Connect a WeChat account via QR |
picoclaw agent -m "..." |
Chat with the agent |
picoclaw agent |
Interactive chat mode |
picoclaw gateway |
Start the gateway |
picoclaw status |
Show status |
picoclaw version |
Show version info |
picoclaw model |
View or switch the default model |
picoclaw mcp list |
List configured MCP servers |
picoclaw mcp add ... |
Add or update an MCP server entry |
picoclaw mcp test |
Probe a configured MCP server |
picoclaw mcp edit |
Open config for advanced MCP editing |
picoclaw mcp remove |
Remove an MCP server entry |
picoclaw cron list |
List all scheduled jobs |
picoclaw cron add ... |
Add a scheduled job |
picoclaw cron disable |
Disable a scheduled job |
picoclaw cron remove |
Remove a scheduled job |
picoclaw skills list |
List installed skills |
picoclaw skills install |
Install a skill |
picoclaw migrate |
Migrate data from older versions |
picoclaw auth login |
Authenticate with providers |
Scheduled tasks and reminders
PicoClaw supports scheduled reminders and recurring tasks through the cron tool:
- One-time reminders: "Remind me in 10 minutes" → triggers once after 10 minutes.
- Recurring tasks: "Remind me every 2 hours" → triggers every 2 hours.
- Cron expressions: "Remind me at 9am daily" → uses a cron expression.
See docs/reference/cron.md for current schedule types, execution modes, command-job gates, and persistence details.
Documentation
For detailed guides beyond this README:
| Topic | Description |
|---|---|
| Docker & Quick Start | Docker Compose setup, launcher/agent modes |
| Web UI & Launcher | Browser-based configuration, chat, remote access, tray, and logs |
| Chat Apps | All 19+ channel setup guides |
| Configuration | Environment variables, workspace layout, security sandbox |
| Plugin Installation | Install and activate Agent Plugin packages |
| Writing a Plugin | Scaffold, validate, test, and share an Agent Plugin package |
| Plugin CLI | Add, list, validate, scaffold, test, and remove plugin entries |
| MCP Server CLI | Add, list, test, edit, and remove MCP server entries |
| Scheduled Tasks and Cron Jobs | Cron schedule types, deliver modes, command gates, job storage |
| Providers & Models | 30+ LLM providers, model routing, model_list configuration |
| Spawn & Async Tasks | Quick tasks, long tasks with spawn, async sub-agent orchestration |
| Hooks | Event-driven hook system: observers, interceptors, approval hooks |
| Steering | Inject messages into a running agent loop between tool calls |
| SubTurn | Subagent coordination, concurrency control, lifecycle |
| Troubleshooting | Common issues and solutions |
| Tools Configuration | Tool switches, exec policies, path policies, MCP, skills |
| Hardware Compatibility | Tested boards, minimum requirements |
| Maintenance Status | Upstream vs fork release dates and migration path |
| Migrating from sipeed/picoclaw | Back up, install, and verify the fork |
Contributing
PRs are welcome! The codebase is intentionally small and readable.
See CONTRIBUTING.md for guidelines.
PicoClaw is built in the open. Come build it with us.
Explore related projects
affaan-m/ECC
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
300,686 starsNousResearch/hermes-agent
The agent that grows with you
262,395 starsmultica-ai/andrej-karpathy-skills
A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.
231,802 starsfirecrawl/firecrawl
Supercharge your AI agents with data from the web and beyond. Building the library for superintelligence. 🔥
200,444 stars