releaseintermediate
[Release] openclaw/openclaw v2026.4.25: OpenClaw 2026.4.25
By steipetegithub
View original on githubOpenClaw v2026.4.25 delivers major upgrades across voice synthesis, plugin architecture, observability, and browser automation. TTS now supports multiple providers (Azure Speech, Xiaomi, ElevenLabs v3, etc.) with chat-scoped controls and per-agent overrides. Plugin startup paths move to a cold persisted registry for deterministic operations and reduced manifest scanning. OpenTelemetry coverage expands across model calls, token usage, and tool loops with bounded attributes. Browser automation gains safer tab URLs, iframe-aware snapshots, and improved CDP readiness. Control UI adds PWA/Web Push support and enhanced setup flows.
Key Points
- •TTS system completely redesigned: `/tts latest` for read-aloud, `/tts chat on|off|default` for session-scoped auto-TTS, plus per-agent and per-account overrides with 8+ provider support (Azure Speech, Xiaomi, Local CLI, Inworld, Volcengine, ElevenLabs v3)
- •Plugin registry migrated to cold persisted storage: eliminates broad manifest scans, makes plugin updates/repairs/discovery deterministic, and improves install metadata handling
- •OpenTelemetry instrumentation expanded: covers model calls, token usage, tool loops, harness runs, exec processes, outbound delivery, context assembly, and memory pressure with low-cardinality bounded attributes
- •Browser automation hardened: safe tab URLs in responses, iframe-aware role snapshots, CDP readiness tuning for slow hosts, headless one-shot launch mode, and deeper browser doctor probes
- •Control UI enhanced with PWA/Web Push support, Crestodian first-run repair, TUI setup flows, context mode selection, and shorter startup greeting
- •Install/update process hardened across Windows, macOS, Linux, Docker with bundled plugin runtime deps, Node service restarts, LaunchAgent token rotation, and mixed-version gateway verification
- •Plugin hooks expanded: before-agent-finalize hooks, cron jobId context, bounded native permission fingerprints, and Codex MCP relay support
- •Provider discovery optimized: cold manifest lookups through installed plugin index avoid broad scans; Provider Index serves as fallback for not-yet-installed providers
- •Discord voice channel LLM override: `channels.discord.voice.model` allows per-channel model selection while keeping STT/TTS on existing media settings
- •Diagnostics improvements: signal-specific OTLP endpoint overrides, W3C traceparent propagation from model calls, bounded exporter health diagnostics, and new Prometheus plugin for metrics scraping
Found this useful? Add it to a playbook for a step-by-step implementation guide.
Workflow Diagram
Start Process
Step A
Step B
Step C
Complete
Concepts
Artifacts (5)
TTS Configuration Override Exampleyamlconfig
# Per-agent TTS override
agents:
list:
- id: agent-1
tts:
provider: azure-speech
voice: en-US-AriaNeural
# Per-channel account override
channels:
discord:
accounts:
account-123:
tts:
provider: elevenlabs-v3
voice: custom-voice-id
voice:
model: gpt-4-turbo # Override LLM for voice responses
# Global TTS config
messages:
tts:
provider: default
enabled: trueBrowser Automation CLI Commandsbashcommand
# One-shot headless browser launch
openclaw browser start --headless
# Deep browser diagnostics for slow hosts
openclaw browser doctor --deep
# List installed plugins from cold registry
openclaw plugins list
# Inspect persisted registry
openclaw plugins registry
# Refresh plugin registry without full startup scan
openclaw plugins registry --refresh
# Image generation with background override
openclaw infer image generate --background "custom-bg.png" --output-format png
# Model listing with provider filter
openclaw models list --all --provider azure-speechPlugin Registry Configurationyamlconfig
# Cold persisted plugin registry structure
plugins:
registry:
version: 2
installed:
- id: plugin-id-1
name: Plugin Name
install_path: /path/to/plugin
state: enabled
startup: true
capabilities:
- provider
- hook
startup_metadata:
- plugin_id: plugin-id-1
load_order: 1
enabled: true
provider_discovery:
scope: installed
aliases:
- legacy-alias: plugin-id-1OpenTelemetry Configurationyamlconfig
# Signal-specific OTLP endpoint overrides
diagnostics:
otel:
traces:
endpoint: http://localhost:4317/v1/traces
metrics:
endpoint: http://localhost:4317/v1/metrics
logs:
endpoint: http://localhost:4317/v1/logs
# Semantic convention stability
semconv_stability_opt_in: gen_ai_latest_experimental
# Exporter health diagnostics
exporter_health:
bounded: true
startup_diagnostics: true
# Environment variable overrides
env:
OTEL_EXPORTER_OTLP_ENDPOINT: http://collector:4317
OTEL_SEMCONV_STABILITY_OPT_IN: gen_ai_latest_experimentalPrometheus Metrics Plugin Setupyamlconfig
# Enable bundled Prometheus plugin
plugins:
enabled:
- diagnostics-prometheus
# Prometheus scrape configuration
diagnostics:
prometheus:
enabled: true
gateway_scrape_route: /metrics
protected: true
low_cardinality: true
# Metrics exported
metrics:
- openclaw.harness.duration_ms
- openclaw.harness.run
- model.call.duration
- token.usage.total