Agent DailyAgent Daily
releaseintermediate

[Release] openclaw/openclaw v2026.4.25: OpenClaw 2026.4.25

By steipetegithub
View original on github

OpenClaw 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
Quality

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: true
Browser 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-speech
Plugin 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-1
OpenTelemetry 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_experimental
Prometheus 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