Plugins and Skills
Plugins and Skills
OpenClaw extends agent capabilities through two mechanisms: plugins (tool providers that register with the gateway) and skills (markdown instruction files that give agents domain knowledge and workflows).
Plugins
Plugins register tools directly with the gateway. Unlike MCP servers (which require mcporter as a middleman), native plugins run in-process and give agents typed tool access without shell execution overhead.
Lobster’s live gateway runs ~68 enabled plugins out of ~94 discovered. The bulk of those are stock model-provider and infrastructure plugins that OpenClaw bundles and enables by default — Lobster doesn’t add anything special there. What’s worth documenting here is the handful of plugins specific to Lobster’s setup: locally-loaded repos that integrate with Apple PIM, Fastmail, Travel Hub, HomeKit, Obsidian, the car, and so on.
To see the full live list on your install:
openclaw plugins list # everything discoveredopenclaw plugins list --enabled # just the active setPlugin Sources
OpenClaw discovers plugins from four locations. The Lobster gateway runs 32 enabled plugins as of this writing, distributed across all four.
| Source | Where They Live | How to Install |
|---|---|---|
| Stock | Bundled in OpenClaw’s dist/extensions (/opt/homebrew/lib/node_modules/openclaw/dist/extensions/) | Auto-loads with OpenClaw; toggled via plugins.entries[<id>].enabled |
| Extension dir | ~/.openclaw/extensions/ | openclaw plugins install <id> for some channel plugins (e.g. WhatsApp) |
| npm packages | ~/.openclaw/npm/node_modules/ | openclaw plugins install <npm-package> (e.g. @martian-engineering/lossless-claw) |
| Local | Git repos on disk | plugins.load.paths in openclaw.json (or openclaw plugins install -l /path) |
About
plugins.allow: this array gates non-stock plugins. Stock plugins load regardless. If you setplugins.allow, any local or installed plugin not in the list is blocked from loading.
Stock Plugins Enabled on Lobster
OpenClaw bundles dozens of stock plugins (mostly model providers); Lobster enables only the ones it actively uses. The current 14 enabled stock plugins:
| Plugin | Purpose |
|---|---|
anthropic | Anthropic model provider |
openai | OpenAI model provider (Lobster’s default routes through here, currently openai/gpt-5.5) |
imessage | iMessage channel — backed by the local imsg CLI via channels.imessage.cliPath |
telegram | Notification channel for exec approval prompts |
browser | Headless browser automation for web interactions |
memory-core | File-backed memory search with hybrid vector + BM25 |
memory-wiki | Obsidian-renderable wiki bridge over memory-core |
active-memory | Bounded blocking memory sub-agent that injects relevant memory into prompt context before eligible replies |
open-prose | Structured prose generation via /prose programs |
oc-path | jsonc-aware config editing (the substrate behind oc_path_get / oc_path_set wrappers) |
file-transfer | Path-allowlisted file moves (node-scoped) |
elevenlabs | TTS voice + SAG skill |
canvas | Live shared canvases (editor surface) |
policy | Tool-policy enforcement primitives used by sandboxed agents |
The remaining stock plugins (other model providers like Google/Mistral/Groq, voice/media plugins like Deepgram/Runway/Fal, telephony, etc.) are discovered but not enabled on Lobster. Run
openclaw plugins listto see the full discovery list and toggle as needed.
Third-Party npm-Installed Plugins
Plugins installed into ~/.openclaw/npm/node_modules/ via openclaw plugins install <npm-package>. They don’t appear in plugins.allow or plugins.load.paths but show up in openclaw plugins list under their npm package name. Currently 4 enabled on Lobster:
| Plugin | npm package | Version | Purpose |
|---|---|---|---|
| Lossless Claw | @martian-engineering/lossless-claw | 0.11.2 | Context-window compaction — keeps long conversations coherent past the model’s effective window. martian-engineering/lossless-claw |
| ACPX | @openclaw/acpx | 2026.5.22 | ACP runtime backend for configurable commands |
| Codex | @openclaw/codex | 2026.5.22 | OpenAI Codex provider integration (used by the openai-codex auth profile) |
| Voice Call | @openclaw/voice-call | 2026.5.22 | Twilio-backed voice-call origination for owner-initiated calls |
Install or update: openclaw plugins install <package-name>.
Lobster-Specific Plugins (Locally Loaded)
These plugins live in git repos referenced from plugins.load.paths so edits are live after a gateway restart. Currently 13 loaded from local repos:
| Plugin | ID | Repo (relative to ~/GitHub/) | Version | Purpose |
|---|---|---|---|---|
| Apple PIM | apple-pim-cli | Apple-PIM-Agent-Plugin/openclaw | 3.7.10 | Calendars, reminders, contacts, mail via native Swift CLIs and EventKit |
| Fastmail | fastmail-cli | fastmail-mcp-remote/openclaw-plugin | 3.1.4 | Email: inbox, search, read, drafts, folders |
| Travel Hub | travel-hub | travel-hub/openclaw | 2.0.1 | Trip management, flights, hotels, ground transport |
| Obsidian Vault | obsidian-vault | lobster/openclaw-plugins/obsidian | 1.1.1 | Read/write access to the owner’s Obsidian vault |
| Find My | openclaw-findmy | findmy-cli | 0.1.0 | Find My locations for devices and people |
| Porsche Connect | porsche-connect-cli | porsche-connect/openclaw | 3.0.1 | Vehicle status, climatization, location |
| Trakt | trakt-tools | trakt-plugin/openclaw | 1.9.0 | Movie and TV show tracking via trakt.tv |
| Parcel | openclaw-parcel | openclaw-parcel | 2.0.7 | Package delivery tracking via the Parcel macOS app |
| Instapaper | instapaper-cli | openclaw-instapaper | 1.1.5 | Reading list and highlight management |
| EasyPost | openclaw-easypost | openclaw-easypost | 1.0.3 | Shipping labels and rate quotes |
| Restaurant | restaurant-cli | restaurant-cli | 0.1.18 | Reservations via Resy, OpenTable, Tock, SevenRooms |
| FaceTime | facetime | openclaw-facetime | 2026.5.10-beta.1 | FaceTime audio/video bridge |
whatsapp | (extension dir, not git) | 2026.5.22 | WhatsApp channel via Baileys (Web protocol). Installed under ~/.openclaw/extensions/whatsapp/ rather than plugins.load.paths. |
Some additional plugins are present in the live config but intentionally not documented as user-facing features here (e.g. experimental/in-progress ones). See
openclaw plugins list --enabledfor the authoritative live list.
Plugin notes
Apple PIM uses a factory pattern where each agent gets its own config from its workspace directory (apple-pim/config.json). Restricted agents can have blocklists that hide private calendars or contact groups at the plugin level, without needing tool deny entries. It registers five tools: apple_pim_calendar, apple_pim_reminder, apple_pim_contact, apple_pim_mail, and apple_pim_system.
Fastmail shells out to the fastmail CLI via execFile (no shell, no injection risk). The CLI handles MCP connection and auth via ~/.config/fastmail-cli/config.json. Tokens use a rolling 30-day sliding window — the Worker extends the expiry on every successful call and returns it in an X-Token-Expires-At header, which the CLI writes back to config.json. As long as the CLI runs at least once per 30 days, the token never expires; re-auth is only needed on outright revocation.
Travel Hub is a native plugin (registered as travel-hub in plugins.entries) that exposes travel_hub_* tools directly to the main agent. For restricted agents (family, group), a travel-hub mcporter wrapper script is allowlisted in ~/.openclaw/exec-approvals.json for read-only access paths where the native tool isn’t appropriate.
HomeClaw (HomeKit smart home control) does NOT register as a separately enumerated plugin in plugins.allow. It surfaces as homekit_* tools on the main agent via the HomeClaw bridge and skills — see HomeKit Control.
Obsidian Vault runs as a native local plugin loaded from ~/GitHub/lobster/openclaw-plugins/obsidian. The obsidian_* tools the main agent allows are registered directly by that plugin; there is no mcporter middleman.
Parcel integrates with the Parcel macOS app to track deliveries. The agent can list active deliveries, add new tracking numbers, and check delivery status. The published NPM package is openclaw-parcel; the plugin ID and plugins.entries key are both openclaw-parcel.
Porsche Connect provides vehicle status, remote climatization, and location tracking via the Porsche Connect API.
Trakt lets the agent log movies and shows the family watches, look up what’s trending, and check watch history. Loaded locally rather than from ClawHub.
Find My (openclaw-findmy, loaded from ~/GitHub/findmy-cli) queries Apple’s Find My network for device and person locations. Used by the main agent (and the location-aware skills) for “where is X” and family location queries. Pairs with the Find My shared skill for query patterns.
Skills
Skills are markdown files (SKILL.md) that inject domain knowledge and workflows into the agent’s context when triggered. Unlike plugins, skills don’t register tools. Instead, they teach the agent how to use existing tools for specific tasks.
Skills live in two places:
- Shared skills (
~/.openclaw/skills/) are accessible to all agents - Agent-specific skills (
openclaw-agents/<id>/skills/) are scoped to one agent
Shared Skills
Available to all agents in the gateway.
| Skill | Purpose |
|---|---|
| Apple PIM | Calendar, reminder, and contact query patterns and best practices |
| iMessage Health | Diagnostics and troubleshooting for the iMessage bridge |
| Browser Use | Headless browser automation patterns (navigate, click, extract) |
| Cron | Create, edit, and manage scheduled cron jobs |
| Dump | Quick-capture web content into the Obsidian knowledge base |
| Eight Sleep | Eight Sleep pod control (temperature, schedules, sleep data) |
| Find My | Query Find My locations for devices and people |
| Moshi Best Practices | Guidance for preparing a host for Moshi remote coding |
| Obsidian | Read, edit, search, and create notes in Obsidian vault |
| OpenClaw CLI | CLI reference for openclaw commands and subcommands |
| Sonos | Speaker control (play, pause, volume, grouping) |
| Trafilatura | Extract clean article text from web pages |
| Travel Hub | Trip management patterns and tool usage |
| Update Docs | Update changelog and project documentation after completing work |
| YouTube Transcript | Extract transcripts from YouTube videos |
Agent-Specific Skills (Main Agent)
Scoped to the primary agent only.
| Skill | Purpose |
|---|---|
| Auto-Dream | Cognitive memory consolidation via periodic “dream cycles” (daily cron at 4 AM). Scans daily logs, extracts decisions and lessons, routes to structured memory layers with importance scoring and forgetting curves. Community skill by MyClaw.ai. |
| Apple Mail | Apple Mail notification handling and email routing |
| Blue Bottle | Blue Bottle Coffee subscription management (skip, pause, status) |
| Eight Sleep | Eight Sleep pod commands specific to the owner’s preferences |
| FlightRadar | Real-time aircraft tracking via FlightRadar24 API |
| Travel Hub | Agent-specific trip concierge patterns and briefing programs |
| Walking Map | Build walking routes with Google Maps links and timing buffers |
| WhatsApp channel management and troubleshooting | |
| Update Docs | Agent-scoped doc update workflow |
How Skills Work
A skill is a directory with a SKILL.md file containing frontmatter (trigger conditions, description) and a markdown body (instructions, examples, tool usage patterns). When the agent encounters a matching trigger, the skill content is injected into context.
~/.openclaw/skills/└── sonos/ └── SKILL.md # Trigger: "sonos", "speaker", "music", "play"Skills can also contain supporting files (data, templates, scripts) that the agent references during execution.
Configuration
Plugin Allowlist
The plugins.allow array gates non-stock plugins. Only listed plugin IDs from your local paths and ClawHub installs will load; stock plugins load regardless.
Lobster’s live plugins.allow (32 entries) spans all four source types — local repos, npm packages, the extension dir, and stock plugins it wants to explicitly enumerate for clarity:
{ "plugins": { "allow": [ "acpx", "active-memory", "anthropic", "apple-pim-cli", "browser", "canvas", "codex", "elevenlabs", "facetime", "fastmail-cli", "file-transfer", "imessage", "instapaper-cli", "lossless-claw", "memory-core", "memory-wiki", "obsidian-vault", "oc-path", "open-prose", "openai", "openclaw-collaboration", "openclaw-easypost", "openclaw-findmy", "openclaw-parcel", "policy", "porsche-connect-cli", "restaurant-cli", "telegram", "trakt-tools", "travel-hub", "voice-call", "whatsapp" ] }}Without an allowlist, all discovered non-stock plugins auto-load. Always set plugins.allow to explicit trusted IDs.
Local Plugin Paths
{ "plugins": { "load": { "paths": [ "/path/to/Apple-PIM-Agent-Plugin/openclaw", "/path/to/fastmail-mcp-remote/openclaw-plugin", "/path/to/travel-hub/openclaw", "/path/to/lobster/openclaw-plugins/obsidian", "/path/to/porsche-connect/openclaw", "/path/to/trakt-plugin/openclaw", "/path/to/openclaw-parcel", "/path/to/openclaw-instapaper", "/path/to/openclaw-easypost", "/path/to/restaurant-cli", "/path/to/openclaw-facetime", "/path/to/findmy-cli" ] } }}Each path points to a directory with the plugin’s package.json and entry point.
Plugin Entries
Individual plugin config goes in plugins.entries:
{ "plugins": { "entries": { "fastmail-cli": { "enabled": true, "config": { "cliCommand": "fastmail", "autoDiscover": true } }, "apple-pim-cli": { "enabled": true, "config": {} }, "openclaw-parcel": { "enabled": true, "config": { "apiKey": { "$secretRef": "/plugins/openclaw-parcel/apiKey" } } } } }}Set enabled: false to disable a plugin without removing it from the allowlist.
Per-Agent Tool Policies
Plugins register tools that any agent can call by default. Use per-agent tools.deny to restrict access. Note that agents.list is a JSON array, not an object keyed by id:
{ "agents": { "list": [ { "id": "group-agent", "tools": { "deny": ["fastmail_*"] } } ] }}This denies the group-chat agent access to all Fastmail tools. Combined with Apple PIM’s factory config pattern, you get defense-in-depth: tool policy controls which agents can call a plugin, and the plugin’s own config controls what data it exposes.
See How to Build Your Own §5.2 for the full multi-agent tool policy design.
Installing Plugins
From ClawHub
openclaw plugins install apple-pim-cliFrom Local Path
openclaw plugins install -l /path/to/plugin-repoVerify
# List all plugins with load statusopenclaw plugins list
# Check a specific pluginopenclaw plugins list | grep apple-pimAfter installing or changing plugin config, restart the gateway:
openclaw gateway restartTroubleshooting
Plugin Not Loading
Check that the plugin ID is in plugins.allow (for non-stock plugins). Without it, the plugin is discovered but blocked. Stock plugins ignore the allowlist.
”plugins.allow is empty” Warning
This means any discovered non-stock plugin will auto-load. Set plugins.allow to an explicit list of trusted IDs.
Plugin Tools Not Available to Agent
Check the agent’s tools.deny list and tools.alsoAllow list. Also verify the plugin is listed in plugins.entries with enabled: true.
”plugin not found” Warnings on Startup
openclaw plugins list may report stale plugins.entries keys (e.g. parcel-cli after a rename to openclaw-parcel). Remove the stale key from plugins.entries; the gateway ignores them but the warning is noisy.
ClawHub Plugin Version Mismatch
# Check installed versionopenclaw plugins list | grep openclaw-parcel
# Update to latestopenclaw plugins install openclaw-parcel