This update introduces the Skill Workshop for governed skill creation, migrates critical state to SQLite for improved reliability, and significantly optimizes the Control UI and memory watcher performance.
OpenClaw v2026.6.1-beta.2 brings a substantial wave of stability and performance improvements, focusing on state persistence, developer tooling, and user interface responsiveness. The core of this release is a strategic shift toward SQLite-backed state management and the introduction of the Skill Workshop, a governed environment for creating and reviewing agent skills.
Beyond these structural changes, the release addresses critical reliability issues in tool call recovery, mobile delivery across various channels, and memory synchronization on macOS and Linux systems.
Key Changes
Skill Workshop & Developer Experience
The most significant feature addition is the Skill Workshop, which introduces a governed flow for skill creation. This includes:
- Governed Review Flow: Agents can now apply, reject, or quarantine explicit skill proposals through a guarded review process.
- Proposal Management: Proposals can now carry approved support files, be revised in place with versioned frontmatter, and be managed via a new Control UI dashboard.
- Enhanced Documentation: A dedicated Skill Workshop guide has been added to cover governed creation, approval policies, and recovery.
State Migration to SQLite
To reduce filesystem scanning and improve recovery after restarts, several critical state components have been migrated to SQLite:
- Plugin Install Index: The installed plugin index is now persisted in SQLite, ensuring package lookups survive reloads without repeated disk scans.
- iMessage Monitor State: Reply caches, sent-echo dedupe, and catchup cursors for iMessage are now SQLite-backed.
- Cron Persistence: Cron jobs, runtime state, and run history have moved from legacy JSON/JSONL files to the shared state database.
- ACP Metadata: Agent Control Plane (ACP) session metadata and event ledgers are now persisted in SQLite.
- OpenRouter Cache: Model capability caching for OpenRouter has transitioned to SQLite.
Control UI & Performance Optimizations
The Control UI has received a major overhaul to reduce latency and improve the user experience:
- Startup Prioritization: The UI now prioritizes the first Gateway websocket connection and chat startup refresh over lower-priority tasks like bootstrap refresh and health checks.
- Chat Composer Enhancements: Typing is now handled via a local draft mirror to prevent top-level state updates on every keystroke, and the composer now clears immediately after a message is sent.
- Dreaming Tab: A new agent selector has been added to the Dreaming tab, allowing users to switch between agent contexts for dreaming status and diary views.
- Chat Metadata:
chat.history now returns sufficient metadata for startup hydration, eliminating the need for a follow-up sessions.list call.
Memory & Infrastructure Stability
- FileProvider Recovery: On macOS, memory sync and wiki compile paths now implement bounded retries for transient
EAGAIN (errno -11) failures common in iCloud/FileProvider-backed storage.
- Linux Watcher Optimization: A new Linux-only memory directory watcher reduces descriptor fan-out by watching directories rather than individual files, preventing
ENOSPC exhaustion in large workspaces.
- QMD Lock Contention: Cross-process write locks have been added to QMD updates and embeds to prevent
SQLITE_BUSY errors during concurrent gateway and CLI activity.
- iOS Improvements: Added a hosted push relay default (
https://ios-push-relay.openclaw.ai), native iPad display layout support, and a dedicated Talk tab with realtime playback and echo suppression.
Impact
Fixed Issues
- A2A Messaging: Fixed a bug where
sessions_send rejected model-generated body aliases (like SendMessage or content), restoring agent-to-agent messaging for Anthropic and Pi-backed agents (#88146).
- WhatsApp Login: Resolved an issue where WhatsApp QR login would fail immediately on the first 408 timeout instead of retrying with a replacement socket (#47367).
- Codex Streaming: Fixed a bug where Telegram partial streaming received no assistant deltas for
openai-codex agents, restoring live prose updates (#88405).
- macOS Updater Loop: Fixed a critical issue where
launchctl submit created KeepAlive jobs that caused the gateway to be repeatedly stopped in an infinite update loop (#88736).
- CLI JSON Output: Suppressed Clack startup spinners when the
--json flag is used, ensuring machine-readable output is not polluted by TUI glyphs (#88602).
Model & Provider Updates
- MiniMax M3: Added support for MiniMax M3 as the default model for API and portal providers.
- Google Provider: Fixed a routing issue where Google Gemini models incorrectly routed to the
openai-responses transport, causing 401 errors (#88480).
- OpenAI TTS: Added support for the
[[tts:speed=N]] directive, allowing users to tune speech rates for OpenAI TTS providers (#12163).
Upgrade Guide
State Migrations
This release performs several automatic migrations from JSON/JSONL files to SQLite. While these are designed to be seamless, it is recommended to:
- Backup your state directory (
~/.openclaw/state) before upgrading.
- Run
openclaw doctor after the upgrade to verify that cron, plugin, and iMessage migrations completed successfully.
Configuration Warnings
Users running large-scale gateways may notice new configuration warnings regarding memorySearch.sync.watch. If you encounter file descriptor pressure, the recommended mitigation is to explicitly set sync.watch: false in your openclaw.json configuration.