Skip to content
Projects

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.

How these counts are measured

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

PicoClaw

The featherweight AI agent that fits anywhere.

Small on purpose. Small is not lesser. Small is enough.

Go 1.27.3+ Supported platforms MIT License Latest release GitHub stars
Documentation Discord DeepWiki

English | 中文


PicoClaw on Discord — meet builders, share ideas, get help

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 upstream release fork release
Last commit on main upstream last commit fork last commit

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 -public flag 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.1 by default. Set PICOCLAW_GATEWAY_HOST=0.0.0.0 or use the -public flag 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.

  1. 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.
  2. 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. Set api_base to 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 configure AWS_REGION via environment variable or AWS config/profile.

** Azure OpenAI uses api_key when set. If api_key is omitted, the provider falls back to Microsoft Entra ID via DefaultAzureCredential (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
WhatsApp Easy (QR scan or bridge URL) Native / Bridge Guide
Weixin Easy (Native QR scan) iLink API Guide
QQ 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, default 127.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 via PICOCLAW_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.md and 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.

⭐ Star PicoClaw · 💬 Join Discord · 🐛 Report an issue

Explore related projects