Skip to main content
June 19, 2026 v0.15.0 is a big round on the Agent Panel — streaming, discoverable commands, real recovery — plus converter and pack hardening underneath.

The panel chat streams now

Extended-thinking shows up live in a collapsible “see thinking” accordion, and the reply types in character-by-character, with a running thinking-token count. No more staring at a blank panel while the agent works.

SDK slash commands in the composer

The orchestrator probes the Agent SDK for the commands your account exposes and surfaces the useful built-ins in the panel’s / menu — /compact, /context, /usage, /loop, /goal, /clear. (Your unrelated skills/plugins are filtered out, so the menu stays relevant.) Panel-local commands — /reload, /reload-ui, /restart — live there too.

One-click recovery for a wedged agent

If the agent backend ever stops responding (e.g. its shell handle dies after an account/token change), /restart brings it back: it kills the orchestrator and its whole child tree and starts a fresh session — the only thing that actually clears a wedged shell, since resuming would just restore it. It runs entirely over a pure-Python route, so it works even when the agent can’t answer. The process handling that powers it is now pid-reuse-safe: the pack re-verifies a process’s identity (command line + recorded creation time) immediately before every signal, so a recycled PID can never be mistaken for the orchestrator — your unrelated shells and editors are never touched.

--channels is gone

The legacy interactive --channels mode (and the panel_say / panel_inbox / panel_status tools) is fully removed. The panel runs only on the autonomous orchestrator on its dedicated bridge port 9180, so nothing can steal the panel’s port anymore. The pack is now ComfyUI Agent Panel (comfyui-agent-panel) on the Comfy Registry.

Under the hood

  • Race-free turn gate — the panel’s message queue can no longer deadlock and strand messages; one turn per batch with true read-receipts.
  • Workflow converter (UI→API) hardening — the recurring “dangling link → graph silently produces nothing” class is gone:
    • a de-virtualization pre-pass rewrites Get/Set bus + Reroute wiring nodes straight to their real source before expansion, so the expander only ever sees real nodes;
    • a subgraph-edge relink fixes subgraph→subgraph outputs (an A→B edge no longer drops when B expands before A);
    • virtual PrimitiveNode values (shared seed/steps) resolve at the top level;
    • V3 dynamic combos (COMFY_DYNAMICCOMBO_V3) key nested inputs correctly (<combo>.<nested>), object_info backfill covers nodes missing from the bulk response, and VHS object-form widgets_values map by name.
  • More render-verified packs — ideogram ×2 (V3 fix), z-image ControlNets ×2 (DWPose registers once scikit-image is pinned), qwen-image-edit, and a full LTX-2.3 rebuild: txt2vid + img2vid now ship on the official Comfy-Org two-stage template (LTXAVTextEncoderLoader + gemma abliterated LoRA + dynamic distilled LoRA + ×2 upscale) — sharp 1280×704 with synced audio, replacing the soft GGUF/DualCLIPLoader path. See the LTX-2.3 post.
  • Installers now resolve each cloned node’s requirements.txt into the ComfyUI venv (not system Python) — the root cause behind a long tail of “installed but won’t load” nodes. Why it matters.