Skip to content

Releases: Iron-Ham/claudio

Orchestration 2.0: Production-Ready Multi-Team Pipeline Execution

24 Feb 19:59
cd5c492

Choose a tag to compare

This release delivers the full Orchestration 2.0 stack as the default execution engine for both UltraPlan and TripleShot workflows. What began as a set of independently-built coordination primitives — task queues, mailboxes, approval gates, scaling monitors — now operates as a unified, production-ready pipeline that decomposes plans into teams, executes tasks in parallel with dependency ordering, and dynamically scales concurrency based on workload and budget.

Highlights

Orchestration 2.0 Goes Default

UltraPlan now uses the multi-phase pipeline by default (UsePipeline: true), and TripleShot switches to the team-based TeamCoordinator with callback-driven execution. The legacy file-polling path remains available via tripleshot.use_legacy for adversarial mode. This is the culmination of 10+ packages working together: task queues, coordination hubs, bridges, teams, pipelines, adaptive leads, and scaling monitors.

Multi-Phase Pipeline with Team Execution

Plans are decomposed into teams grouped by file affinity, then orchestrated through sequential phases (planning → execution → review → consolidation). Each phase runs its own team.Manager with scoped event subscriptions and budget tracking. The bridge layer connects abstract team queues to real Claude Code instances via worktree + tmux, with sentinel file monitoring for completion detection.

Dynamic Scaling & Concurrency Control

Bridges now adjust instance concurrency in real-time based on queue depth and budget. A sync.Cond-based dynamic semaphore replaces fixed channel-based limiting, enabling runtime resizing. Per-team scaling bounds flow from plan decomposition through the full stack, with budget-aware vetoing to prevent overspend.

Claude Code Advanced CLI Integration

Full support for modern Claude Code flags: granular permission modes (default, plan, auto-accept, bypass), per-tool allow/disallow lists, max_turns, model selection, --append-system-prompt, --no-user-prompt, and --output-format stream-json. Per-role overrides let different pipeline phases use different configurations (e.g., plan mode for reviewers, bypass for implementers).

Stream-JSON Subprocess Infrastructure

New internal/streamjson/ package provides typed NDJSON event parsing for Claude Code's stream-json output format — the foundation for replacing tmux-based screen scraping with direct process control.

Other Improvements

  • Native Worktree Flag — Support for Claude Code's built-in --worktree flag
  • System Prompt Separation — Orchestration instructions injected via --append-system-prompt-file instead of inline
  • TUI Pipeline Status — Real-time phase indicator and per-team task progress in the header
  • Inter-Instance Communication — File-based mailbox, context propagation, and peer debate protocol wired into production
  • File Conflict Prevention — Advisory file locking prevents concurrent edits across instances
  • Self-Improving AGENTS.md — Living documentation protocol with directory-scoped guidelines

Bug Fixes

  • Fixed triple-shot event channel sharing across concurrent sessions
  • Fixed implementer auto-collapse and judge nesting in Orch 2.0 tripleshot
  • Fixed judge evaluation parse failures for non-flat string arrays
  • Prevented Agent Teams from starting in tmux mode inside Claudio
  • Fixed false stale timeouts for idle instances waiting at the prompt
  • Fixed race condition causing judge to misreport failed attempts
  • Fixed duplicate instance creation from default retry behavior
  • Fixed TUI freeze when starting triple-shot in teamwire mode
  • Fixed channel safety issues (panic on close, goroutine leaks)
  • Fixed failed-dependency cascade leaving teams permanently blocked
  • Fixed Manager.Stop() deadlock from mutex held through wg.Wait()
  • Fixed data race in startJudge() session snapshot
  • Fixed mailbox.Watch() race on initial message snapshot

Full changelog: CHANGELOG.md

Reliable process cleanup and TUI stability fixes

05 Feb 22:34
a91655d

Choose a tag to compare

This patch release addresses several stability issues around process lifecycle management and TUI rendering, particularly in adversarial tripleshot workflows.

Highlights

Reliable Process Cleanup on Exit

Closing Claudio now reliably terminates all Claude backend processes across every exit path, including PR workflows. Previously, tmux kill-session could leave orphaned Claude CLI processes if they ignored SIGHUP. The shutdown now captures the full process tree before stopping, polls for graceful exit, kills the per-instance tmux server, and force-kills any survivors via SIGKILL — all consolidated into a shared tmux.GracefulShutdown() helper.

Async Group Dismiss

Killing a group via gq no longer freezes the TUI or corrupts the display. The dismiss operation now runs asynchronously, and warning messages no longer write directly to stderr (which conflicts with Bubble Tea's rendering).

Bug Fixes

  • Tripleshot Adversarial UI Nesting - Tripleshot attempts in adversarial mode are now immediately nested under their "Attempt N" sub-groups when using the async startup path, rather than appearing flat during the "preparing" phase.
  • Tripleshot Adversarial Round Disambiguation - Fixed duplicate reviewer spawning when an implementer completed after a rejection. The code now skips processing if already under review, preserves the current review round, and validates review file round numbers to ignore stale files.

Full changelog: CHANGELOG.md

Codex CLI Backend Support & Mixed-Backend Adversarial Mode

03 Feb 04:10
f5bbf16

Choose a tag to compare

This release introduces support for the Codex CLI as an alternative AI backend, enabling users to switch between Claude and Codex or use them together in adversarial sessions for cross-model code review.

Highlights

Codex CLI Backend Support

Claudio now supports the Codex CLI alongside Claude as a configurable AI backend. You can select your preferred backend globally, and Claudio automatically adapts its state detection and workflow handling for the selected backend. The Codex backend defaults to full-auto approval mode for seamless operation.

Mixed-Backend Adversarial Sessions

A new adversarial.reviewer_backend configuration option lets you specify a different AI backend for the reviewer role in adversarial sessions. This enables powerful workflows like "Claude as implementer + Codex as reviewer" for cross-model code review perspectives.

Bug Fixes

  • Exit Panic Fix - Fixed a panic when exiting Claudio caused by the conflict detector being stopped multiple times
  • Session Backend Initialization - Fixed undefined backend build errors when using NewWithSession
  • Codex Detector Thread Safety - Fixed a potential race condition in Codex backend detector initialization
  • TUI Config AI Settings - Added ai.claude.command and ai.codex.command settings to the config editor
  • Adversarial Round Disambiguation - Fixed stale sentinel files causing new rounds to start early

Performance

  • TUI Output Rendering Cache - Improved typing responsiveness in command/search modes by caching filtered output state (~20ns cache hits, 0 allocations)

Full changelog: CHANGELOG.md

Tripleshot Adversarial Grouping & Session Stability Fixes

02 Feb 17:14
566bb19

Choose a tag to compare

This release enhances the tripleshot adversarial workflow with better organization and fixes critical session stability issues that could cause frozen displays.

Highlights

Tripleshot Adversarial Mode Grouping

When running tripleshot with adversarial mode, instances are now organized hierarchically by attempt. Each of the three attempts gets its own "Attempt N" sub-group in the sidebar, making it easy to track which implementer/reviewer pair belongs to which attempt and round.

Frozen Session Recovery

Fixed a critical bug where individual Claude sessions could become permanently frozen while other sessions continued working. Sessions that become unresponsive are now automatically detected and recovered after 30 seconds of sustained failure.

Process Cleanup on Exit

Claude processes are now properly terminated when Claudio exits. Previously, :quit or Ctrl+C would leave tmux sessions running indefinitely. The new shutdown behavior stops all instances cleanly while preserving session state for potential resume.

Performance

  • Adversarial Mode Polling - Fixed UI hitching when starting adversarial tasks in large repositories by caching file locations and rate-limiting directory traversals

Other Changes

  • Documentation refreshed for v0.13.0-v0.14.0 features

Full changelog: CHANGELOG.md

Interactive Config and Adversarial Mode Fixes

30 Jan 18:50
7639fba

Choose a tag to compare

This patch release fixes three bugs affecting the interactive configuration UI, release skill, and adversarial mode sidebar display.

Bug Fixes

Interactive Config Text Input

Fixed an issue where lowercase 'k' and 'j' characters couldn't be typed when editing text fields in the interactive config UI (:config). The vim-style navigation keys were being intercepted even during text editing. Navigation with these keys still works for dropdowns and normal navigation mode.

Release Skill Changelog Link

The /release skill now generates stable changelog links that point to the release tag (e.g., blob/v0.14.0/CHANGELOG.md) instead of main, ensuring references don't drift as the changelog evolves.

Duplicate Previous Rounds in Adversarial Mode

Fixed a bug where "Round N" entries would appear duplicated in the "Previous Rounds" sidebar section. This occurred when both the implementer and reviewer phases triggered the same group reorganization. An idempotency guard now prevents duplicate moves.


Full changelog: CHANGELOG.md

Enhanced Keyboard Navigation and Adversarial Mode UI

30 Jan 17:18
7f6eb4e

Choose a tag to compare

This release improves keyboard navigation with macOS-style shortcuts and refines the adversarial mode UI for better clarity. It also includes significant stability fixes across tripleshot and adversarial workflows.

Highlights

Enhanced Keyboard Navigation

macOS-style keyboard shortcuts now work in input mode and the task prompt writer.

  • Opt+Left/Right for word navigation
  • Opt+Backspace for word deletion
  • Cmd+Left/Right/Backspace for line operations (where supported)

Adversarial Mode UI Improvements

The sidebar display for adversarial mode has been significantly refined:

  • Current round appears inline in the group header (e.g., "Refactor auth (Round 3)")
  • Tripleshot with adversarial shows clear implementer/reviewer pairs with phase indicators
  • Simplified group headers remove redundant progress counters

Breaking Changes

⚠️ claudio tripleshot CLI command removed - TripleShot is now accessed exclusively through the TUI. Run claudio start then use :tripleshot (or :triple, :3shot) in command mode.

Performance

  • Fixed INPUT mode typing lag with filtered output caching

Bug Fixes

  • Fixed tripleshot-adversarial feedback loop (implementers now iterate on rejection)
  • Fixed Alt/Option arrow keys being interpreted as Escape
  • Fixed tripleshot UI stalling during worktree creation
  • Fixed TUI tripleshot config settings being ignored
  • Fixed false positive stale/stuck detection in multiple scenarios
  • Fixed sidebar auto-scroll when navigating off-screen
  • Fixed adversarial sentinel file search in unexpected locations
  • Fixed hash and tilde characters not being sent correctly
  • Improved working state detection with full spinner word pool

Full changelog: CHANGELOG.md

Adversarial Review Mode & Color Themes

29 Jan 19:27
6a34503

Choose a tag to compare

This release introduces Adversarial Review Mode and Color Themes - two major features that enhance workflow quality and user experience.

Highlights

Adversarial Review Mode

Each tripleshot implementer can now be paired with a critical reviewer that must approve the work (score >= 8/10) before completion. This creates a feedback loop that significantly improves code quality through iterative refinement.

  • Enable with --adversarial flag on tripleshot command
  • Reviewers provide structured feedback with improvement requirements
  • Automatic retry with :adversarial-retry if an instance gets stuck
  • Smart sidebar organization with Previous Rounds container

Color Themes

Personalize your Claudio experience with 14 built-in themes plus custom theme support:

  • Built-in themes: default, monokai, dracula, nord, claude-code, solarized-dark, solarized-light, one-dark, github-dark, gruvbox, tokyo-night, catppuccin, synthwave, ayu
  • Custom themes: Create YAML files in ~/.config/claudio/themes/
  • Live preview: Theme changes apply immediately via :config

Other Improvements

  • Background Cleanup Jobs - claudio cleanup now runs in the background by default
  • Auto-Start on Add - Instances added via :a now auto-start (configurable)
  • Enhanced Sidebar - Status lines show elapsed time, cost, and files modified
  • Async Task Addition - Adding tasks is now significantly faster with two-phase approach
  • Sidebar Scroll-Only Navigation - New J/K keys to scroll without changing selection

Bug Fixes

  • Fixed stale RUNNING status after tmux server death
  • Fixed input mode not exiting when plan editor opens
  • Fixed ultraplan task instances not auto-writing completion files
  • Fixed plan files being written to wrong location in worktrees
  • Fixed theme persistence across restarts

See the full changelog for all changes.

v0.12.7: Fix frozen output from transient tmux errors

23 Jan 18:58
24125a4

Choose a tag to compare

Fixed

Frozen Output from Transient Tmux Errors

Fixed a critical bug where tmux sessions would appear frozen (no output updates, input not showing) due to transient tmux errors being misinterpreted as "session doesn't exist".

The Problem

Previously, any non-timeout error from tmux display-message or has-session commands would cause the capture loop to think the session had ended, setting running = false and stopping all output updates. This meant that transient errors like broken pipes, signal interruptions, or other temporary tmux communication issues would permanently freeze the session.

The Fix

Now, only definitive "session gone" errors cause the capture loop to exit:

  • error connecting to - socket doesn't exist
  • can't find session: - session not found
  • no server running - tmux server not running
  • executable file not found - tmux not installed

All other errors (broken pipe, signal killed, generic exit status) are assumed to be transient, and the capture loop continues retrying on the next tick.

Also fixed checkSessionExists to properly capture stderr using CombinedOutput() for accurate error message detection.


Full Changelog: v0.12.6...v0.12.7

v0.12.6: Multi-Pass Planning Session Resume Fix

22 Jan 21:32
39181fe

Choose a tag to compare

Fixed

  • Multi-Pass Planning Session Resume - Fixed a critical bug where resuming an ultraplan session in multi-pass mode (:ultraplan --multi-pass) would fail to trigger the plan evaluator. The fix adds proper multi-pass handling in session resume: it now correctly checks for existing planners in PlanCoordinatorIDs, collects any completed plans from worktrees, and triggers the evaluator when all planners have finished.

Changed

  • Instance Manager Callbacks Required at Construction - Callbacks are now passed via ManagerCallbacks struct in ManagerOptions at construction time, preventing the "leaky abstraction" bug where Start()/Reconnect() could be called without callbacks configured.
  • Runtime Guards on Instance Lifecycle Methods - Start(), StartWithResume(), and Reconnect() now return ErrManagerNotConfigured if the Manager was not properly constructed.
  • Improved Error Handling - The Reconnect() method now logs a warning if enabling monitor-bell fails.

Removed

  • Dead Code Cleanup - Removed unused RecoverSession() method and configureInstanceCallbacks() method.

v0.12.5

22 Jan 15:25
5d8c6dd

Choose a tag to compare

Fixed

  • Session Attachment Output Capture - Fixed a critical bug where attaching to an existing session would not configure instance callbacks, causing all instances to appear frozen with no output updates. The previous fix (#564) created instance managers but the reconnection code called mgr.Reconnect() directly instead of orch.ReconnectInstance(), which skipped the callback configuration (state changes, metrics, timeouts, bells). Now uses the proper high-level reconnection method that configures all necessary callbacks.