All About Octo…
A personal AI assistant built on OpenClaw — connecting language models to real-world services through plugins, agents, and channels.
This is the documentation for Octo 🐙 — Jeff Steinbok’s personal instance of OpenClaw, a modular AI assistant framework.
Selected public plugins, services, and shared Python libraries documented here are also mirrored in openclaw-hub, which acts as the public source repo for those surfaces.
Much of this setup is inspired by Omar Shahine’s work on 🦞 Lobster — his docs inspired me to publish my own.
💬 Channels
I talk to Octo via Telegram and Discord. I’d prefer to use iMessage or WhatsApp, but until I’ve decided for sure that this is useful, I’m not going out and buying a Mac Mini or getting a new phone number.
🔒 Security
- Unprivileged account — OpenClaw runs under its own dedicated user on Ubuntu with no
sudopermissions. It can configure itself new plugins, but it cannot install anything on its own. - Owner-only access — Octo only responds to me. Not even family members have access.
- No secrets in Git — All tokens and credentials are kept in hidden files that are never synced to version control.
- No exec on the main agent — Octo’s primary agent does not have
execpermissions, meaning it cannot run arbitrary shell commands. If something truly dangerous needs to happen, I have to explicitly ask the root agent, which is the only one with elevated privileges. This also means we rely more heavily on purpose-built plugins rather than skills — since skills can’t execute code withoutexec, every real-world interaction needs a proper plugin behind it.
📬 Mail & Calendar
- Full mail read access — Octo reads Jeff’s personal Outlook inbox directly via the Microsoft Graph API (OAuth2). Mail is never injected into the AI as raw content — Octo queries it on demand using structured API calls.
- Calendar access — Octo fetches Jeff’s personal and family calendars via Graph API, Nicole’s calendar via ICS feed, and the work calendar via Exchange/Graph API. Calendars are synced to markdown files in memory every hour (7 AM–5 PM) and at midnight.
- Dedicated mailbox — Octo has its own mailbox on Fastmail where it sends mail on Jeff’s behalf. Incoming mail to that address is monitored via a Python SSE service.
💰 Cost
- Self-hosted — Runs on an old Lenovo X1 Yoga Gen 3 with 16 GB of RAM running Ubuntu Desktop.
-
Token-conscious — As much work as possible is pushed to Python plugins to reduce token usage. Primary model is GitHub Copilot Sonnet (covered by the Copilot subscription), with Anthropic and Gemini as fallbacks.
Role Model Notes Primary github-copilot/claude-sonnet-4.6Default for all agents (alias: copilot-sonnet)Fallbacks claude-haiku-4-5→claude-sonnet-4-6→gemini-2.5-flash→gemini-3-pro-previewIn priority order Image github-copilot/claude-sonnet-4.6→claude-sonnet-4-6→gemini-2.5-flash-previewWeb search gemini-2.5-flash-lite - Development via GitHub Copilot CLI— All plugin and config development is done through Copilot CLI. Initially I had Octo debug itself, but it turned out to be far more effective to use a separate Copilot CLI session for development, log reading, and troubleshooting.
- Crontab over agent jobs — Recurring tasks are pushed to crontab whenever possible to avoid spinning up agent sessions. If something fails, the script can send a message to OpenClaw to inform of the error.
🦞 How OpenClaw Works — Super High Level ✈️
🤖 Agents are personas powered by language models. Each agent has its own identity, personality, and set of permitted tools. Agents communicate with users through channels — messaging platforms like Telegram or Discord.
💬 Channels are the messaging platforms that connect agents to users. Each channel is bound to a specific agent and handles message routing between the platform (e.g. Telegram, Discord) and the agent’s conversation loop.
🧩 Plugins are self-contained capabilities that agents can invoke: sending email, checking restaurant availability, snapping a security camera, and more. Each plugin declares its own dependencies and is independently versioned.
🎯 Skills are lightweight, markdown-defined capabilities. Unlike plugins, skills don’t run code — they provide structured prompts and instructions that guide an agent’s behavior. Think of plugins as tools and skills as knowledge.
⚙️ Services are long-running background daemons that watch for events (like incoming email) and route notifications through the system.
🪝 Hooks are event-driven entry points — camera webhooks and other signals that kick off targeted automations the moment something happens.