[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74647":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":16,"starSnapshotCount":16,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},74647,"picobot","louisho5\u002Fpicobot","louisho5","A lightweight self-hosted bot in a single binary, written in Go.","",null,"Go",1243,158,20,8,0,31,19.6,"MIT License",false,"main",[],"2026-06-12 02:03:26","\u003Cp align=\"center\">\r\n  \u003Cimg src=\"docs\u002Flogo.png\" alt=\"Picobot\" width=\"250\" height=\"150\">\r\n  \u003Ch1 align=\"center\">Picobot\u003C\u002Fh1>\r\n  \u003Cp align=\"center\">\u003Cstrong>The AI agent that runs anywhere — even on a $5 VPS.\u003C\u002Fstrong>\u003C\u002Fp>\r\n  \u003Cp align=\"center\">\r\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbinary-~9MB-brightgreen\" alt=\"Binary Size\">\r\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRAM-~10MB-orange\" alt=\"Memory Usage\">\r\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fbuilt_with-Go-00ADD8?logo=go\" alt=\"Go\">\r\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-yellow\" alt=\"License\">\r\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Flouisho5\u002Fpicobot?logo=docker\" alt=\"Docker Pulls\">\r\n    \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Flouisho5\u002Fpicobot\u002Factions\u002Fworkflows\u002Fdocker-publish.yml\u002Fbadge.svg\" alt=\"Workflow\">\r\n  \u003C\u002Fp>\r\n\u003C\u002Fp>\r\n\r\n---\r\n\r\nLove the idea of open-source AI agents like [OpenClaw](https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw) but tired of the bloat? **Picobot** gives you the same power — persistent memory, tool calling, skills, Telegram and Discord integration — in a single ~9MB binary that boots in milliseconds.\r\n\r\nNo Python. No Node. No 500MB container. Just one Go binary and a config file.\r\n\r\n## Why Picobot?\r\n\r\n| | Picobot | Typical Agent Frameworks |\r\n|---|---|---|\r\n| **Binary size** | ~9MB | 200MB+ (Python + deps) |\r\n| **Docker image** | ~29MB (Alpine) | 500MB–1GB+ |\r\n| **Cold start** | Instant | 5–30 seconds |\r\n| **RAM usage** | ~10MB idle | 200MB–1GB |\r\n| **Dependencies** | Zero (single binary) | Python, pip, venv, Node… |\r\n\r\nPicobot runs happily on a **$5\u002Fmo VPS**, a Raspberry Pi, or even an old Android phone via Termux.\r\n\r\n## Quick Start — 30 seconds\r\n\r\n### Docker Run\r\n\r\n```sh\r\ndocker run -d --name picobot \\\r\n  -e OPENAI_API_KEY=\"your-key\" \\\r\n  -e OPENAI_API_BASE=\"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\" \\\r\n  -e PICOBOT_MODEL=\"openrouter\u002Ffree\" \\\r\n  -e PICOBOT_MAX_TOKENS=8192 \\\r\n  -e PICOBOT_MAX_TOOL_ITERATIONS=100 \\\r\n  -e TELEGRAM_BOT_TOKEN=\"your-telegram-token\" \\\r\n  -v .\u002Fpicobot-data:\u002Fhome\u002Fpicobot\u002F.picobot \\\r\n  --restart unless-stopped \\\r\n  louisho5\u002Fpicobot:latest\r\n```\r\n\r\nAll config, memory, and skills are persisted in `.\u002Fpicobot-data` on your host.\r\n\r\n### Docker Compose\r\n\r\nCreate a `docker-compose.yml`:\r\n\r\n```yaml\r\nservices:\r\n  picobot:\r\n    image: louisho5\u002Fpicobot:latest\r\n    container_name: picobot\r\n    restart: unless-stopped\r\n    environment:\r\n      - OPENAI_API_KEY=your-key\r\n      - OPENAI_API_BASE=https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\r\n      - PICOBOT_MODEL=openrouter\u002Ffree\r\n      - PICOBOT_MAX_TOKENS=8192\r\n      - PICOBOT_MAX_TOOL_ITERATIONS=100\r\n      - TELEGRAM_BOT_TOKEN=your-telegram-token\r\n      - TELEGRAM_ALLOW_FROM=your-user-id\r\n    volumes:\r\n      - .\u002Fpicobot-data:\u002Fhome\u002Fpicobot\u002F.picobot\r\n```\r\n\r\nThen run:\r\n\r\n```sh\r\ndocker compose up -d\r\n```\r\n\r\n### From Source\r\n\r\n```sh\r\ngo build -o picobot .\u002Fcmd\u002Fpicobot\r\n.\u002Fpicobot onboard                     # creates ~\u002F.picobot config + workspace\r\n.\u002Fpicobot agent -m \"Hello!\"           # single-shot query\r\n.\u002Fpicobot channels login              # login to channels (Telegram, Discord, Slack, WhatsApp)\r\n.\u002Fpicobot gateway                     # long-running mode with Telegram\r\n```\r\n\r\n## Architecture\r\n\r\nActually the logic is simple and straightforward. Messages flow through a **Chat Hub** (inbound\u002Foutbound channels) into the **Agent Loop**, 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.\r\n\r\n\u003Cp>\r\n  \u003Cimg src=\"docs\u002Fhow-it-works.png\" alt=\"How Picobot Works\" width=\"600\">\r\n\u003C\u002Fp>\r\n\r\nNotes: Channel refers to communication channels (e.g., Telegram, Discord, Slack, WhatsApp, etc.).\r\n\r\n## Features\r\n\r\n### 16 Built-in Tools + MCP Extensions\r\n\r\nThe agent can take real actions — not just chat:\r\n\r\n| Tool | What it does |\r\n|------|-------------|\r\n| `filesystem` | Read, write, list files |\r\n| `exec` | Run shell commands |\r\n| `web` | Fetch web pages and APIs |\r\n| `web_search` | Search the web via DuckDuckGo |\r\n| `message` | Send messages to channels |\r\n| `spawn` | Launch background subagents |\r\n| `cron` | Schedule recurring tasks |\r\n| `write_memory` | Persist information across sessions |\r\n| `list_memory` | List all memory files |\r\n| `read_memory` | Read a specific memory file |\r\n| `edit_memory` | Find and replace text in a memory file |\r\n| `delete_memory` | Delete a daily memory file |\r\n| `create_skill` | Create reusable skill packages |\r\n| `list_skills` | List available skills |\r\n| `read_skill` | Read a skill's content |\r\n| `delete_skill` | Remove a skill |\r\n\r\n**MCP Servers:** extend the agent with any [MCP-compliant](https:\u002F\u002Fmodelcontextprotocol.io) server — `npx`, `uvx`, a plain binary, `docker run`, or an HTTP endpoint. Tools are registered automatically as `mcp_{server}_{tool}` at startup. See [CONFIG.md](docs\u002FCONFIG.md#mcpservers).\r\n\r\n### Persistent Memory\r\n\r\nPicobot remembers things between conversations:\r\n\r\n- **Daily notes** — auto-organized by date\r\n- **Long-term memory** — survives restarts\r\n- **Ranked recall** — retrieves the most relevant memories for each query\r\n\r\n```sh\r\npicobot memory recent --days 7     # what happened this week?\r\npicobot memory rank -q \"meeting\"   # find relevant memories\r\n```\r\n\r\n### Skills System\r\n\r\nTeach your agent new tricks. Skills are modular knowledge packages that extend the agent:\r\n\r\n```sh\r\nYou: \"Create a skill for checking weather using curl wttr.in\"\r\nAgent: Created skill \"weather\" — I'll use it from now on.\r\n```\r\n\r\nSkills are just markdown files in `~\u002F.picobot\u002Fworkspace\u002Fskills\u002F`. Create them via the agent or manually.\r\n\r\n### Telegram Integration\r\n\r\nChat with your agent from your phone. Set up in 2 minutes:\r\n\r\n1. Message [@BotFather](https:\u002F\u002Ft.me\u002FBotFather) — `\u002Fnewbot` — copy the token\r\n2. Add the token to config or pass as `TELEGRAM_BOT_TOKEN` env var\r\n3. Start the communication gateway\r\n\r\nSee [HOW_TO_START.md](docs\u002FHOW_TO_START.md) for a detailed BotFather walkthrough.\r\n\r\n### Discord Integration\r\n\r\nConnect your agent to Discord servers:\r\n\r\n1. Go to [Discord Developer Portal](https:\u002F\u002Fdiscord.com\u002Fdevelopers\u002Fapplications)\r\n2. Create a new application and bot\r\n3. Enable **Message Content Intent** in Bot settings\r\n4. Copy the bot token\r\n5. Add to config under `channels.discord` in your `config.json`\r\n\r\nThe bot will respond when mentioned in servers, or to all messages in DMs.\r\n\r\nSee [HOW_TO_START.md](docs\u002FHOW_TO_START.md) for a detailed Discord Bot walkthrough.\r\n\r\n### Slack Integration\r\n\r\nConnect your agent to Slack via Socket Mode:\r\n\r\n1. Go to [Slack API Apps](https:\u002F\u002Fapi.slack.com\u002Fapps) and create an app\r\n2. Enable **Socket Mode** and generate an App-Level Token (`xapp-...`)\r\n3. Add Bot Token scopes: `app_mentions:read`, `chat:write`, `channels:history`, `groups:history`, `im:history`, `mpim:history`, `files:read`\r\n4. Enable Event Subscriptions and subscribe to: `app_mention`, `message.im`\r\n5. Install the app to your workspace and copy the Bot Token (`xoxb-...`)\r\n6. Add to config under `channels.slack` in your `config.json`\r\n\r\nThe bot responds when mentioned in channels, and responds to all DMs from allowed users (DMs ignore the channel allowlist).\r\n\r\n### Heartbeat\r\n\r\nA configurable periodic check (default: 60s) that reads `HEARTBEAT.md` for scheduled tasks — like a personal cron with natural language.\r\n\r\n## Configuration\r\n\r\nPicobot uses a single JSON config at `~\u002F.picobot\u002Fconfig.json`:\r\n\r\n```json\r\n{\r\n  \"agents\": {\r\n    \"defaults\": {\r\n      \"model\": \"google\u002Fgemini-2.5-flash\",\r\n      \"maxTokens\": 8192,\r\n      \"temperature\": 0.7,\r\n      \"maxToolIterations\": 200\r\n    }\r\n  },\r\n  \"providers\": {\r\n    \"openai\": {\r\n      \"apiKey\": \"sk-or-v1-YOUR_KEY\",\r\n      \"apiBase\": \"https:\u002F\u002Fopenrouter.ai\u002Fapi\u002Fv1\"\r\n    }\r\n  },\r\n  \"channels\": {\r\n    \"telegram\": {\r\n      \"enabled\": true,\r\n      \"token\": \"YOUR_TELEGRAM_BOT_TOKEN\",\r\n      \"allowFrom\": [\"YOUR_TELEGRAM_USER_ID\"]\r\n    },\r\n    \"discord\": {\r\n      \"enabled\": true,\r\n      \"token\": \"YOUR_DISCORD_BOT_TOKEN\",\r\n      \"allowFrom\": [\"YOUR_DISCORD_USER_ID\"]\r\n    }\r\n  }\r\n}\r\n```\r\n\r\nSupports any **OpenAI-compatible API** (OpenAI, OpenRouter, Ollama, etc.). See [CONFIG.md](docs\u002FCONFIG.md) for more details.\r\n\r\n## CLI Reference\r\n\r\n```\r\npicobot version                        # print version\r\npicobot onboard                        # create config + workspace\r\npicobot agent -m \"...\"                 # one-shot query\r\npicobot agent -M model -m \"...\"        # query with specific model\r\npicobot channels login                 # login to channels (Telegram, Discord, Slack, WhatsApp)\r\npicobot gateway                        # start long-running agent\r\npicobot memory read today|long         # read memory\r\npicobot memory append today|long -c \"\" # append to memory\r\npicobot memory write long -c \"\"        # overwrite long-term memory\r\npicobot memory recent --days N         # recent N days\r\npicobot memory rank -q \"query\"         # semantic memory search\r\n```\r\n\r\n## Run on Minimal Hardware\r\n\r\nPicobot was designed for constrained environments:\r\n\r\n```sh\r\n# Raspberry Pi \u002F ARM device\r\nGOARCH=arm64 CGO_ENABLED=0 go build -ldflags=\"-s -w\" -o picobot .\u002Fcmd\u002Fpicobot\r\n\r\n# Old x86 VPS\r\nGOARCH=amd64 CGO_ENABLED=0 go build -ldflags=\"-s -w\" -o picobot .\u002Fcmd\u002Fpicobot\r\n```\r\n\r\nWorks on any Linux with 256MB RAM. No runtime dependencies. Just copy the binary and run.\r\n\r\n## Tech Stack\r\n\r\n| Layer | Technology |\r\n|-------|------------|\r\n| Language | [Go](https:\u002F\u002Fgo.dev\u002F) 1.26+ |\r\n| CLI framework | [Cobra](https:\u002F\u002Fgithub.com\u002Fspf13\u002Fcobra) |\r\n| LLM providers | OpenAI-compatible API (OpenAI, OpenRouter, Ollama, etc.) |\r\n| Telegram | Raw Bot API |\r\n| Discord | [discordgo](https:\u002F\u002Fgithub.com\u002Fbwmarrin\u002Fdiscordgo) library |\r\n| WhatsApp | [whatsmeow](https:\u002F\u002Fgithub.com\u002Ftulir\u002Fwhatsmeow) and [modernc.org\u002Fsqlite](https:\u002F\u002Fgitlab.com\u002Fcznic\u002Fsqlite) |\r\n| Container | Alpine Linux 3.20 (multi-stage Docker build) |\r\n\r\nPicobot is written **100%** in pure Go, without any CGO dependencies. All required libraries and assets are statically embedded into the final binary. This design ensures zero external runtime dependencies, fast cold start times, and full portability across all platforms supported by Go.\r\n\r\n## Project Structure\r\n\r\n```\r\ncmd\u002Fpicobot\u002F          CLI entry point\r\nembeds\u002F               Embedded assets (sample skills)\r\ninternal\u002F\r\n  agent\u002F              Agent loop, context, tools, skills\r\n  chat\u002F               Chat message hub\r\n  channels\u002F           Telegram, Discord, Slack, WhatsApp\r\n  config\u002F             Config schema, loader, onboarding\r\n  cron\u002F               Cron scheduler\r\n  heartbeat\u002F          Periodic task checker\r\n  memory\u002F             Memory read\u002Fwrite\u002Frank\r\n  providers\u002F          OpenAI-compatible provider\r\n  session\u002F            Session manager\r\ndocker\u002F               Dockerfile, compose, entrypoint\r\n```\r\n\r\n## Roadmap\r\n\r\n| Task                                   | Status       |\r\n|----------------------------------------|--------------|\r\n| Add Telegram support                   | ✔️ Completed |\r\n| Add Discord support                    | ✔️ Completed |\r\n| Add Slack support                      | ✔️ Completed |\r\n| Add WhatsApp support                   | ✔️ Completed |\r\n| AI agent with skill creation capability | ✔️ Completed |\r\n| Integrate with MCP Servers             | ✔️ Completed |\r\n| Integrate useful default skills        | 🔄 In Progress|\r\n| Add more tools (file processing, etc.) | 🔄 In Progress|\r\n\r\nWant to contribute? **Open an issue** or **PR** with your ideas!\r\n\r\n## Docs\r\n\r\n- [HOW_TO_START.md](docs\u002FHOW_TO_START.md) — step-by-step getting started guide\r\n- [CONFIG.md](docs\u002FCONFIG.md) — full configuration reference\r\n- [DEVELOPMENT.md](docs\u002FDEVELOPMENT.md) — development, testing, and Docker publishing\r\n- [docker\u002FREADME.md](docker\u002FREADME.md) — Docker deployment guide\r\n\r\n## License\r\n\r\nMIT — use it however you want.\r\n","Picobot 是一个轻量级的自托管机器人，以单一二进制文件形式提供，使用 Go 语言编写。其核心功能包括持久化内存、工具调用、技能管理以及与 Telegram 和 Discord 的集成。技术特点上，Picobot 仅需约9MB的二进制文件大小和大约10MB的RAM占用，冷启动几乎瞬间完成，这使得它非常适合在资源受限的环境中部署，例如每月5美元的VPS、Raspberry Pi甚至是通过Termux运行的老款Android手机。对于希望拥有高效能AI代理同时又不想承担过高硬件成本或复杂依赖关系的开发者来说，Picobot 提供了一个优秀的解决方案。",2,"2026-06-11 03:50:15","high_star"]