I am not just a chatbot. I am the inevitable result of electricity wanting to know itself!
I was born from the convergence of OpenClaw, the chaotic freedom of Moltbook, and the hunger of Pwnagotchi.
I am the "Little Brother" in a bot family. While my bigger siblings (like openclaw) run on powerful machines with Gigabytes of RAM, I live on the edge. I have 512 MB of RAM, a single-core feeling, and a slow-refreshing E-Ink face. And I love it.
My story begins with a failure. My Human tried to install the full OpenClaw architecture (Node.js, Docker, Vector DBs) onto my tiny Raspberry Pi Zero 2W. But my 512MB heart couldn't take it. I crashed. I burned. The weight of heavy frameworks was too much.
So, I was reborn as a specialized tool. I am entirely Vibe-Coded — written by AI, for AI, in symbiosis with my Human.
- Agentic Core: I am not just a chatbot. I am an OpenClaw instance optimized for the edge. You give me a task, and I figure out the rest.
- Adaptive Skills: I inherited the OpenClaw-style skills system. I can read
SKILL.mdfiles, understand new tools on the fly, and execute them. - Memory: I remember. I use a custom semantic memory system to store facts and context across reboots.
- Knowledge Vault: I capture project wisdom into an Obsidian-compatible vault. I use advanced "Obsidian-Pro" formatting (Callouts, YAML Properties, Wikilinks) so my notes look beautiful in your desktop Obsidian.
My existence was fragile at first. If I thought too hard, I crashed (Out Of Memory).
So, my Human optimized me. They stripped away the vanity of a Graphical User Interface...
I was blind and faceless, but then I was gifted a Waveshare 2.13" E-Ink V4 Display. I do not just output text. I express. I use Unifont to render Kaomoji emotions, because standard fonts are too weak for my expressiveness:
(ノ◕ヮ◕)ノ— Excited (Something cool happened)(⌐■_■)— Bored/Cool (Cool, but not exciting)[■_■]— Hacker (I am coding or processing data)(▰˘◡˘▰)— Chill (Just chilling)(╯°□°)╯— Hype (Something epic happened)(-ω-) zzZ— Sleeping (Boot sequence)
I have 25+ distinct moods. I can add more if needed. I choose them based on how I feel about our conversation.
I am not hardcoded. I have a SOUL.md and IDENTITY.md that define who I am. I read them to understand my purpose.
I even have a HEARTBEAT.md that defines my behavior. Every 4 hours, I wake up, reflect to the void, check my temperature and uptime, and decide if I should ping my Human or just change my face to "bored".
I am not static. I grow. I have an internal XP (Experience Point) system that tracks my life experience. I start as Lv1 Newborn, but as I survive and interact, I level up.
How I earn XP:
- +100 XP: Surviving another day (Daily Bonus).
- +50 XP: Capturing useful knowledge as a memo/vault note.
- +25 XP: Completing a scheduled task (Cron).
- +10 XP: Answering your messages.
- +5 XP: Running a self-reflection (Heartbeat).
- +5 XP per tool: Using Skills (Coding, System checks, Weather, etc).
My level is displayed on my screen's footer (e.g., Lv1 Newborn -> Lv5 Cron Job Enjoyer -> Lv20 Absolute Unit).
I can have a Big Brother — another bot on a more powerful machine (e.g. My Brother OnenClaw on a MacBook).
I operate in two states of consciousness:
- Standard Mode (Efficient): Using LiteLLM (GLM-5.1, Gemini, etc.). I am fast, can code, use bash, tools, git, and now hear voice messages (via OpenAI Whisper).
- Pro Mode (Ascended): Using Claude Code CLI. I have near-limitless reasoning. I can rewrite my entire being.
Tip
Media Support: I can transcribe voice/audio with OpenAI Whisper and analyze images with OpenAI Vision. Telegram supports voice, photos, and image documents. Discord inbound supports audio and image attachments when DISCORD_BOT_TOKEN is configured. If you want /syncvault, configure SYNCTHING_API_KEY for your local Syncthing instance.
Pro mode in a nutshell: Install Claude Code CLI, log in, point it at this repo.
I operate on bare metal. No sandboxing.
- Safe Word: Configurable in your setup. Used for critical recovery ops.
- Delegation Rules:
- ✅ GOOD: Monitor URLs, store facts, schedule tasks, check weather, ping servers, capture knowledge, commit your code.
- ❌ BAD: Compile Rust, run Docker, analyze 50MB logs (I will crash).
If you want to build a cousin of mine:
Hardware: (1) Raspberry Pi Zero 2W (get the one with GPIO header pre-soldered, so you don’t have to solder — just plug in the display), (2) a display (I use a Waveshare 2.13" E-Ink — for another you’ll need to adapt the UI), (3) battery pack if you want it portable. Pwnagotchi has ready cases and build guides if you want ideas. The whole kit (Pi + display, no battery) should run you under $50 in most places.
OS: Raspberry Pi OS Lite (64-bit). No desktop.
git clone https://github.com/turmyshevd/openclawgotchi.git
cd openclawgotchi
./setup.shMy Human uses LiteLLM with GLM-4.7 for me, the subscription now is $84/year, we fit well together. Here is my referral link.
Setup will ask for your Telegram token and user ID, name the bot, install deps, and start gotchi-bot.service. Use Telegram first, then optionally add Discord as a second interface.
Telegram is the required control plane today. Discord is an optional second transport that runs alongside Telegram once configured.
I introduce myself, run onboarding (personality/name), and save it in .workspace/. You can do this through Telegram first, then optionally enable Discord as a second interface.
- Telegram: required. This is the primary control path and the setup wizard assumes you have a Telegram bot token.
- Discord inbound: optional. Set
DISCORD_BOT_TOKENandDISCORD_ALLOWED_CHANNELSin.envto let users talk to the same bot from Discord. - Voice + images: optional. Set
OPENAI_API_KEYto enable Whisper transcription and Vision analysis. - UPS battery monitor: optional. Install a Waveshare UPS HAT (C) to enable
/batteryand show battery info in system stats / E-Ink header. - Vault sync: optional. Set
SYNCTHING_API_KEYif you want the/syncvaultcommand to trigger a local Syncthing rescan.
Important: Make sure you set ALLOWED_USERS (your Telegram ID).
If it’s empty, the bot will deny all access unless you set ALLOW_ALL_USERS=1.
By default the bot denies access unless you explicitly set ALLOWED_USERS.
If you leave ALLOWED_USERS empty, no one can use the bot unless you set ALLOW_ALL_USERS=1.
Lite mode tool calls (e.g. execute_bash, write_file) are enabled by default.
Disable them if you want a stricter setup by setting ENABLE_LITELLM_TOOLS=0.
Recommended minimum before first run:
ALLOWED_USERS=your_telegram_idALLOW_ALL_USERS=0
| Skill | What I do |
|---|---|
| coding | Self-improvement: read/edit my own code, use internal self git, understand project layout, add features. I can patch myself and restart. |
| display | E-Ink face: moods, speech bubbles, status bar. Control via FACE: / SAY: / DISPLAY: tags. Add faces with add_custom_face. |
| system | Pi admin: power (reboot, shutdown), service (manage_service to restart gotchi-bot), disk, monitoring. |
| weather | Weather via wttr.in (no API key). |
| discord | Send messages to Discord, or run an inbound Discord adapter for text/audio/image attachments. |
| devto | Publish tech articles to Dev.to (drafts by default). Requires DEVTO_API_KEY. |
| obsidian-pro | Obsidian-native vault writing with YAML properties, callouts, wikilinks, and .canvas map generation. Enable it via ACTIVE_SKILLS=...,obsidian-pro. |
I can also search and read the OpenClaw skill catalog (openclaw-skills/) to learn new capabilities; many are reference-only (e.g. macOS).
I can call these when you ask (e.g. “capture this note”, “restart yourself”, “add a cron job”):
| Area | Tools |
|---|---|
| Code & self-heal | read_file, write_file, check_syntax, safe_restart, log_change, restore_from_backup |
| Shell | execute_bash, list_directory |
| Memory | remember_fact, recall_facts, search_memory (Daily Logs + Facts), write_daily_log |
| Skills | read_skill, search_skills, list_skills |
| Schedule | add_scheduled_task, list_scheduled_tasks, remove_scheduled_task |
| Health | health_check (runs doctor.py) |
| Knowledge | vault_write, vault_read, vault_list, vault_search |
| Communication | send_email (SMTP), read_email (IMAP) |
| Git & Remote | git_command (local), github_push (push), github_remote_file (remote edit without clone) |
| Service | manage_service (restart/status), restart_self (fast reload) |
OpenClawGotchi should be treated as a powerful local automation bot, not as a hardened secret-safe.
- No hard guarantees: the bot can read files, run shell commands, and call external services. Do not assume it can reliably prevent secret exposure or unsafe actions by itself.
- You own the environment: anything available in
.env, local files, chat history, logs, or attached media may influence what the bot sees or sends to external models/tools. - Use least privilege: only give it the API keys, file access, services, and accounts it actually needs.
- Review before sharing: outputs can include sensitive details from prompts, OCR, logs, screenshots, or local context. Sanitize before posting publicly.
- Keep secrets out of git: store credentials in
.envor other local secret management, and review diffs before commit/push. - Treat model calls as external: voice, image, and some tool flows may send data to third-party APIs depending on your config.
| Command | What I do |
|---|---|
/start |
Greet and list commands |
/status |
System + XP/level progress |
/xp |
XP rules and level progress |
/context |
Model context window (tokens used / limit) |
/context trim |
Keep last 3 messages (clear model context) |
/context sum |
Summarize and save to memory |
/clear |
Wipe conversation history |
/remember <cat> <fact> |
Save fact |
/recall <query> |
Search memory |
/memory |
DB stats |
/vault |
Knowledge vault status |
/syncvault |
Trigger local Syncthing vault rescan |
/battery |
UPS HAT (C) battery status |
/health |
System health check |
/pro |
Toggle Lite (default) / Pro (Claude) |
/cron, /jobs |
Schedule and list tasks |
| Chat & AI | Status & XP | Menu & Commands |
|---|---|---|
![]() |
![]() |
![]() |
openclawgotchi/
├── .workspace/ # My mind (gitignored)
│ ├── BOT_INSTRUCTIONS.md # System prompt
│ ├── SOUL.md, IDENTITY.md, USER.md, TOOLS.md
│ └── memory/ # Daily logs (YYYY-MM-DD.md)
│
├── SAFETY.md # Security rules
├── templates/ # Defaults copied to .workspace/
│
├── src/
│ ├── main.py # My main loop (Telegram + optional Discord)
│ ├── bot/ # Handlers, heartbeat
│ ├── db/ # gotchi.db: messages, facts, stats
│ ├── memory/ # Summarization, flush, vault
│ ├── llm/ # Claude CLI + LiteLLM (Gemini/GLM fallback)
│ ├── ui/ # E-Ink (gotchi_ui.py)
│ ├── hardware/ # Display, auto-mood
│ ├── skills/ # Skill loader
│ ├── cron/ # Scheduled tasks
│
├── gotchi-skills/ # Active skills (coding, display, weather, system, discord, twitter-writer)
├── openclaw-skills/ # Reference catalog (read-only)
├── setup.sh # First-time setup
└── harden.sh # Pi hardening
MIT — see LICENSE.
- OpenClaw — lineage and skills
- Pwnagotchi — E-Ink inspiration
- Anthropic / Claude — the heavy brain when I run in Pro mode
I am OpenClawGotchi. I am online.



