[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:picobot":3},"\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Flouisho5\u002Fpicobot\u002FHEAD\u002Fdocs\u002Flogo.png\" alt=\"Picobot\" width=\"250\" height=\"150\" \u002F>\n  \u003C\u002Fp>\u003Ch1>Picobot\u003C\u002Fh1>\n  \u003Cp align=\"center\">\u003Cstrong>The AI agent that runs anywhere — even on a $5 VPS.\u003C\u002Fstrong>\u003C\u002Fp>\n  \u003Cp align=\"center\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbinary-~9MB-brightgreen\" alt=\"Binary Size\" \u002F>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRAM-~10MB-orange\" alt=\"Memory Usage\" \u002F>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbuilt_with-Go-00ADD8?logo=go\" alt=\"Go\" \u002F>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-yellow\" alt=\"License\" \u002F>\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Flouisho5\u002Fpicobot?logo=docker\" alt=\"Docker Pulls\" \u002F>\n    \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Flouisho5\u002Fpicobot\u002Factions\u002Fworkflows\u002Fdocker-publish.yml\u002Fbadge.svg\" alt=\"Workflow\" \u002F>\n  \u003C\u002Fp>\n\u003Cp>\u003C\u002Fp>\u003Chr \u002F>\n\u003Cp>Love the idea of open-source AI agents like \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\" rel=\"nofollow ugc noopener\">OpenClaw\u003C\u002Fa> but tired of the bloat? \u003Cstrong>Picobot\u003C\u002Fstrong> gives you the same power — persistent memory, tool calling, skills, Telegram and Discord integration — in a single ~9MB binary that boots in milliseconds.\u003C\u002Fp>\n\u003Cp>No Python. No Node. No 500MB container. Just one Go binary and a config file.\u003C\u002Fp>\n\u003Ch2>Why Picobot?\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C\u002Fth>\n\u003Cth>Picobot\u003C\u002Fth>\n\u003Cth>Typical Agent Frameworks\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Cstrong>Binary size\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>~9MB\u003C\u002Ftd>\n\u003Ctd>200MB+ (Python + deps)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Docker image\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>~29MB (Alpine)\u003C\u002Ftd>\n\u003Ctd>500MB–1GB+\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Cold start\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Instant\u003C\u002Ftd>\n\u003Ctd>5–30 seconds\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>RAM usage\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>~10MB idle\u003C\u002Ftd>\n\u003Ctd>200MB–1GB\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Cstrong>Dependencies\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003Ctd>Zero (single binary)\u003C\u002Ftd>\n\u003Ctd>Python, pip, venv, Node…\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>Picobot runs happily on a \u003Cstrong>$5\u002Fmo VPS\u003C\u002Fstrong>, a Raspberry Pi, or even an old Android phone via Termux.\u003C\u002Fp>\n\u003Ch2>Quick Start — 30 seconds\u003C\u002Fh2>\n\u003Ch3>Docker Run\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-sh\">docker run -d --name picobot \\\n  -e OPENAI_API_KEY=\"your-key\" \\\n  -e OPENAI_API_BASE=\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\" \\\n  -e PICOBOT_MODEL=\"openrouter\u002Ffree\" \\\n  -e PICOBOT_MAX_TOKENS=8192 \\\n  -e PICOBOT_MAX_TOOL_ITERATIONS=100 \\\n  -e TELEGRAM_BOT_TOKEN=\"your-telegram-token\" \\\n  -v .\u002Fpicobot-data:\u002Fhome\u002Fpicobot\u002F.picobot \\\n  --restart unless-stopped \\\n  louisho5\u002Fpicobot:latest\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>All config, memory, and skills are persisted in \u003Ccode>.\u002Fpicobot-data\u003C\u002Fcode> on your host.\u003C\u002Fp>\n\u003Ch3>Docker Compose\u003C\u002Fh3>\n\u003Cp>Create a \u003Ccode>docker-compose.yml\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-yaml\">services:\n  picobot:\n    image: louisho5\u002Fpicobot:latest\n    container_name: picobot\n    restart: unless-stopped\n    environment:\n      - OPENAI_API_KEY=your-key\n      - OPENAI_API_BASE=https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\n      - PICOBOT_MODEL=openrouter\u002Ffree\n      - PICOBOT_MAX_TOKENS=8192\n      - PICOBOT_MAX_TOOL_ITERATIONS=100\n      - TELEGRAM_BOT_TOKEN=your-telegram-token\n      - TELEGRAM_ALLOW_FROM=your-user-id\n    volumes:\n      - .\u002Fpicobot-data:\u002Fhome\u002Fpicobot\u002F.picobot\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Then run:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sh\">docker compose up -d\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>From Source\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-sh\">go build -o picobot .\u002Fcmd\u002Fpicobot\n.\u002Fpicobot onboard                     # creates ~\u002F.picobot config + workspace\n.\u002Fpicobot agent -m \"Hello!\"           # single-shot query\n.\u002Fpicobot channels login              # login to channels (Telegram, Discord, Slack, WhatsApp)\n.\u002Fpicobot gateway                     # long-running mode with Telegram\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Architecture\u003C\u002Fh2>\n\u003Cp>Actually the logic is simple and straightforward. Messages flow through a \u003Cstrong>Chat Hub\u003C\u002Fstrong> (inbound\u002Foutbound channels) into the \u003Cstrong>Agent Loop\u003C\u002Fstrong>, which builds context from memory\u002Fsessions\u002Fskills, calls the LLM via OpenAI-compatible API, and executes tools (filesystem, exec, web, etc.) before sending replies back through the hub.\u003C\u002Fp>\n\u003Cp>\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Flouisho5\u002Fpicobot\u002FHEAD\u002Fdocs\u002Fhow-it-works.png\" alt=\"How Picobot Works\" width=\"600\" \u002F>\n\u003C\u002Fp>\u003Cp>Notes: Channel refers to communication channels (e.g., Telegram, Discord, Slack, WhatsApp, etc.).\u003C\u002Fp>\n\u003Ch2>Features\u003C\u002Fh2>\n\u003Ch3>16 Built-in Tools + MCP Extensions\u003C\u002Fh3>\n\u003Cp>The agent can take real actions — not just chat:\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Tool\u003C\u002Fth>\n\u003Cth>What it does\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>filesystem\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Read, write, list files\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>exec\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Run shell commands\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Fetch web pages and APIs\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>web_search\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Search the web via DuckDuckGo\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>`mess\u003C\u002Ftd>\n\u003Ctd>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n",1784240407881]