Agent DailyAgent Daily
releaseintermediate

[Release] openclaw/openclaw v2026.4.24-beta.1: openclaw 2026.4.24-beta.1

By steipetegithub
View original on github

OpenClaw v2026.4.24-beta.1 introduces Google Meet as a bundled participant plugin with real-time voice capabilities, adds DeepSeek V4 models to the default catalog, and implements WebRTC-backed realtime voice loops across Talk, Voice Call, and Google Meet. The release includes browser automation improvements (coordinate clicks, longer action budgets, per-profile headless overrides), lighter plugin/model infrastructure at startup, and breaking changes to plugin SDK tool-result transforms requiring migration to `registerAgentToolResultMiddleware`.

Key Points

  • Google Meet plugin now bundled with personal Google auth, Chrome/Twilio realtime transports, artifact/attendance exports, and OAuth recovery tooling for existing tabs
  • DeepSeek V4 Flash and V4 Pro added to bundled model catalog with V4 Flash as onboarding default; thinking/replay behavior fixed for follow-up tool-call turns
  • WebRTC realtime voice loops implemented across Talk, Voice Call, and Google Meet with full OpenClaw agent consultation via `openclaw_agent_consult` handoff
  • Browser automation enhanced with viewport coordinate clicks, 60s default action budget, per-profile headless overrides, and improved tab reuse/recovery
  • Plugin/model infrastructure optimized: static model catalogs, manifest-backed model rows, lazy provider dependencies reduce startup overhead
  • Breaking change: Plugin SDK must migrate from `api.registerEmbeddedExtensionFactory()` to `api.registerAgentToolResultMiddleware()` with explicit contract declarations for consistent Pi/Codex behavior
  • Gemini Live realtime voice provider added for backend Voice Call and Google Meet audio bridges with bidirectional audio and function-call support
  • Control UI refined with compact live-tool chips, collapsible tool groups, per-tool toggles, and Steer action for injecting follow-up messages into active runs
  • Model listing performance improved with safe static catalogs, narrower row-source orchestration, and reduced registry enumeration
  • Codex harness now runs context-engine operations in app-server sessions while maintaining native thread state and compaction auditability

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)

Plugin SDK Breaking Change Migrationjavascripttemplate
// OLD - DEPRECATED
api.registerEmbeddedExtensionFactory(...)

// NEW - REQUIRED
api.registerAgentToolResultMiddleware({
  contracts: {
    agentToolResultMiddleware: {
      targetedHarnesses: ['pi', 'codex']
    }
  },
  transform: (result) => {
    // Tool-result transform logic
    return result;
  }
});
Browser Automation Configurationyamlconfig
browser:
  actionTimeoutMs: 60000  # 60s default action budget
  profiles:
    profile-name:
      headless: true  # Per-profile headless override
      # Other profile settings...
Voice Call Setup Commandsbashcommand
# Setup voice call provider
openclawvoicecall setup

# Dry-run smoke test for Twilio/provider readiness
openclawvoicecall smoke

# Google Meet OAuth doctor
openclawgooglemeet doctor --oauth

# Recover existing Meet tab
openclawgooglemeet recover-tab

# Browser coordinate click
openclawbrowser click-coords <x> <y>

# Matrix self-device verification
openclawmatrix verify self
Agent Bootstrap Configurationyamlconfig
agents:
  defaults:
    contextInjection: "never"  # Disable workspace bootstrap file injection
    # Agent fully owns its prompt lifecycle
Plugin Manifest Model Catalog Contractjsontemplate
{
  "setup": {
    "requiresRuntime": false
  },
  "modelCatalog": {
    "provider": "provider-name",
    "models": [
      {
        "id": "model-id",
        "name": "Model Name",
        "aliases": ["alias1", "alias2"],
        "discoveryMode": "public"
      }
    ],
    "suppressionRules": [],
    "providers": [
      {
        "name": "provider-name",
        "envVars": ["ENV_VAR_1", "ENV_VAR_2"]
      }
    ]
  }
}