Agent Zero v2.3: Faster Browser Streaming, Orchestration, & Goals

v2.3 delivers faster, more resilient Browser streaming, flexible per-chat and host-browser controls, three new built-in workflow plugins, cleaner skill and project context, and broad provider, tool, and WebUI reliability improvements.

#releases

Agent Zero v2.3 changelog banner

๐ŸŒ Browser Viewer & Streaming

  • URL intent routing fixed โ€” Custom Agent Zero schemes no longer get misrouted to the Browser handler.
  • Frame delivery follows the producer โ€” Live screencasts now use blocking frame reads instead of a 50 ms idle poll.
  • Leaner frame transport โ€” Binary and slim-frame negotiation avoids repeated metadata and base64-in-JSON overhead, while capture is clamped to the viewer's viewport and device pixel ratio.
  • Safe WebUI fallback retained โ€” Binary frames stay disabled where Socket.IO cannot reconstruct attachments correctly, preserving the base64 path.
  • Proportional resizing โ€” Browser frames use contain sizing instead of stretching during viewport changes.
  • Canvas rendering path โ€” Live frames can render through Canvas and ImageBitmap with WebSocket consumers, removing per-frame round trips.
  • Stream completion hardened โ€” The WebSocket supervisor wakes when frame tasks stop early, and the canvas backing store is no longer reallocated unnecessarily.
  • Input survives stream restarts โ€” Hover, click, and wheel input keep working after screencast restarts by preserving the active canvas input surface.

๐Ÿงญ Browser Controls

  • Per-chat or shared tabs โ€” Browser settings now control tab scope and the maximum tabs allowed per chat.
  • Bring Your Own Browser โ€” Host browser selection, normalized configuration, settings controls, and CLI-advertised browser inventory are now built in.
  • Live browser inventory โ€” Available host browsers refresh while settings are open, with guidance for Brave, Opera, Vivaldi, and Chromium-family browsers.
  • Clear endpoint selection โ€” BYOB connections can use automatic discovery, an advertised debug endpoint, or a validated custom endpoint.
  • Keyboard capture stays scoped โ€” Browser controls no longer block typing in the chat composer or other editable fields.

๐Ÿงฉ Orchestrator, Commands, & Goals

  • Built-in Orchestrator โ€” The new Orchestrator plugin adds coding-agent adapter status, settings, per-agent skill references, and a dedicated Plugin Hub entry.
  • Built-in slash commands โ€” Commands can be stored, selected from the composer, and extended from a bundled command pack, with migration for legacy commands.
  • Built-in goal management โ€” Per-chat goals now have visible progress, a /goal command, persistent state, and agent-facing tools.
  • External plugin settings are discoverable โ€” Plugins that declare external settings now appear under External Services.

๐Ÿง  Skills & Project Context

  • Skills move into chat history โ€” Loaded skills are preserved with the conversation instead of being injected as scope-wide prompt pins.
  • More direct skill recall โ€” Relevant skills are matched against the raw user message using names, triggers, tags, and description phrases.
  • Legacy skill cleanup removed โ€” Obsolete active-skill prompt injection and cleanup paths are gone.
  • Project guidance follows the path โ€” Active-project AGENTS.md guidance is loaded into the protocol area without duplicating root project instructions.

๐Ÿค– Providers & MCP

  • Venice defaults to Chat Completions โ€” Direct Venice chat now uses its more compatible transport by default.
  • Local providers use stable defaults โ€” LM Studio, llama.cpp, Ollama, Ollama Cloud, oMLX, vLLM, and other broad OpenAI-compatible providers now default to Chat Completions.
  • Compaction clears stale Responses state โ€” Provider-side context resets when automatic or manual compaction rewrites local history.
  • Saved Venice configurations migrate cleanly โ€” Existing Venice model slots move to Chat Completions with the Venice system prompt disabled.
  • Codex OAuth requests corrected โ€” Proxied Responses calls now use the right request metadata and model slugs.
  • Codex continuation input normalized โ€” Empty continuation turns retain the list-shaped Responses input expected upstream.
  • Local MCP commands parse like a shell โ€” Values such as uvx workspace-mcp and collapsed option/value lines are split correctly before stdio clients start.

โš™๏ธ Code Execution & Parallel Tools

  • PTY reset hangs fixed โ€” Local shells start in a new process session and escalate from SIGTERM to SIGKILL when a foreground command refuses to exit.
  • Parallel code jobs use native badges โ€” Code execution children now render with the proper code_exe log type.
  • All parallel child logs resolve by tool โ€” Tool-specific log objects are selected for every child job, not only code execution.
  • Parent-visible child logs are reused โ€” Direct parallel workers retain their native badge types through execution.

๐Ÿ–ฅ๏ธ WebUI & Maintenance

  • Faster first mount โ€” Startup vendor scripts load with defer, and Bootstrap is served locally instead of through parser-blocking CDN requests.
  • Modal layering corrected โ€” Toasts and tooltips appear above modals while confirmation dialogs remain on top.
  • Cached component imports are awaited โ€” Deferred markup no longer races Alpine bindings when modules come from cache.
  • Runtime guidance expanded โ€” The agent prompt now explains the separate framework and task Python runtimes plus the WebUI JSON API's CSRF flow.
  • Lean self-update backups โ€” Time Travel history is excluded from user-data backups.
  • Workspace races stay quiet โ€” Transient delete and rename races no longer surface snapshot errors for removed workspaces.
  • Launcher links refreshed โ€” README download links now point to Launcher v1.2.
  • README redesigned โ€” Positioning, feature scanning, Launcher-first setup, and basic troubleshooting are clearer.