Skip to content

Releases: SiavZ/yaran

dux-amq v0.1.1 — codex resume fix, reconnect logging, jcode provider

Choose a tag to compare

@SiavZ SiavZ released this 01 Sep 05:43
19d2a25

Bug-fix release. Fixes a codex agent that would silently refuse to start, adds the observability that made it hard to find, and adds jcode as a provider.

Fixes

Resume the parent thread, not a forked codex sub-agent (#62)

A codex agent in a shared workspace would not start. dux spawned the PTY successfully and the child exited ~1s later with nothing in dux.log. The provider's real error was:

thread/resume failed: cannot resume an unloaded multi-agent v2 sub-agent
through its parent; resume the parent first (code -32600)

parse_codex_rollout_identity recorded payload.id, which on a forked rollout is the sub-agent's own identifier. The resumable thread is payload.session_id (equal to parent_thread_id when forked, and to id when not).

Sampling 2,543 real rollouts: 1,188 had session_id != id — roughly 47% could produce an agent that silently refuses to start. 842 older rollouts omit session_id and still fall back to id.

Log reconnect failures (#63)

continue_reconnect reported failures only through the status line, which is overwritten within milliseconds during a 60-session auto-resume. Failing reconnects were unobservable after the fact. Now logged with session id, provider, branch, worktree, resolved launch mode, and the underlying error — sanitized per the project's logging rules.

Features

jcode provider (#64)

jcode is pre-configured as a default provider. Flags verified against the binary: --no-update pins the pane's binary (jcode auto-updates by default), resume-latest is deliberately unset (--resume with no argument opens a picker and would hang the spawn), and oneshot uses run --quiet.

Two documented limitations, both dux-side: targeted resume will not engage because should_resume_session requires a UUID and jcode ids are not UUIDs; and jcode run --quiet writes a trailing [Tokens] line to stdout that lands in generated commit messages.

Platforms

linux-amd64, linux-arm64, darwin-amd64, darwin-arm64, with SBOMs, SHA256SUMS, and keyless build-provenance attestation.


Installation

Use any of the following options to install dux on your system:

This is a fork of patrickdappollonio/dux that
adds multi-agent messaging (AMQ), peer routing, watch rules, session resume, and the
dux-amq overlay. Installing upstream's dux will not give you those features.
Fork releases are tagged dux-amq-vX.Y.Z so they never collide with upstream's tags.

Shell:

curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | bash

By default, the script installs to ~/.local/bin if it exists and is in your PATH, otherwise /usr/local/bin. You can override the install directory or pin a specific version:

# Custom install directory
curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | DUX_INSTALL_DIR=~/.bin bash

# Specific version
curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | DUX_VERSION=dux-amq-v0.1.0 bash

Every release ships linux-amd64, linux-arm64, darwin-amd64, and darwin-arm64 builds. The script verifies the archive against the release's SHA256SUMS before extracting and refuses to install on a mismatch.

Binary download:

Grab the latest release for your platform from the Releases page. Extract it, drop the dux binary somewhere on your PATH, and run it. On first launch, dux creates a fully commented config file. That file is the documentation.

Each release also carries a CycloneDX SBOM per target and a keyless build-provenance attestation, verifiable with:

gh attestation verify dux-linux-amd64.tar.gz --owner SiavZ

The AMQ overlay (multi-agent wrappers, message queue, doctor tooling) is installed separately — see dux-amq/README.md.

Homebrew: not currently published for this fork. Use the shell installer above. (brew install patrickdappollonio/tap/dux installs upstream dux, which lacks the AMQ features this repo documents.)

dux-amq v0.1.0 — first release of the fork's own code

Choose a tag to compare

@SiavZ SiavZ released this 31 Aug 09:50
e76fa68

This is the first release that actually contains this fork's code.

Every previous v* tag in this repository was an ancestor of patrickdappollonio/dux@main, so every prior release artifact was upstream dux. None of them contained the AMQ messaging, peer routing, watch rules, session resume, or GDPR purge features this repository documents — roughly 11,500 lines of fork-only modules (peer.rs, amq_inject.rs, purge.rs, resume_recovery.rs, watch/, app/inject_runtime.rs, app/orchestrator.rs, app/state/).

Fork releases are tagged dux-amq-vX.Y.Z so they never collide with upstream's vX.Y.Z sequence.

What's in it

Everything on main, including the shared-workspace and auto-resume work:

  • AMQ multi-agent messaging — dux peer send, agent-handle routing, signed DUX2 envelopes, inject bridge
  • Session resume — per-agent provider session IDs, stranded-history recovery, shared-workspace auto-resume
  • Watch rules — generic PTY watch engine with rate-limit auto-retry and context auto-clear
  • GDPR purge — dux session purge --hard, cascading into provider history, AMQ inbox, worktree, sqlite, and logs
  • dux doctor — diagnostic dump with --json and --anonymize

Recent fixes included: selection preserved after Escape, Claude bridge stubs rejected on resume, copying restored in agent panes, Codex pane scrolling restored, auto-clear suppressed while an agent is busy.

Release pipeline fixes

  • The tag-to-version step strips the dux-amq- prefix and rejects a tag that does not yield semver. The previous dux-amq-v0.1.0-rc1 tag could never have built.
  • Dropped cargo-edit, which cannot install on the pinned 1.88.0 toolchain (smol_str 0.3.4 requires rustc 1.89) and broke every build job on this workflow's first-ever run.
  • New verify-release job downloads the artifact, verifies its checksum, and asserts the binary exposes the fork-only peer and session purge subcommands — so an upstream-lineage release fails the build instead of shipping silently.
  • install.sh falls back to /releases when /releases/latest returns 404, and reports an actionable error rather than a bare failure.

Security

  • Cleared a yanked chacha20 0.10.0 and RUSTSEC-2026-0253 (use-after-free in lru's LruCache::pop()) from the dependency graph.
  • Each artifact ships a CycloneDX SBOM and a keyless build-provenance attestation:
gh attestation verify dux-linux-amd64.tar.gz --owner SiavZ

Platforms

linux-amd64, linux-arm64, darwin-amd64, darwin-arm64. Verify against SHA256SUMS.


Installation

Use any of the following options to install dux on your system:

This is a fork of patrickdappollonio/dux that
adds multi-agent messaging (AMQ), peer routing, watch rules, session resume, and the
dux-amq overlay. Installing upstream's dux will not give you those features.
Fork releases are tagged dux-amq-vX.Y.Z so they never collide with upstream's tags.

Shell:

curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | bash

By default, the script installs to ~/.local/bin if it exists and is in your PATH, otherwise /usr/local/bin. You can override the install directory or pin a specific version:

# Custom install directory
curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | DUX_INSTALL_DIR=~/.bin bash

# Specific version
curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | DUX_VERSION=dux-amq-v0.1.0 bash

Every release ships linux-amd64, linux-arm64, darwin-amd64, and darwin-arm64 builds. The script verifies the archive against the release's SHA256SUMS before extracting and refuses to install on a mismatch.

Binary download:

Grab the latest release for your platform from the Releases page. Extract it, drop the dux binary somewhere on your PATH, and run it. On first launch, dux creates a fully commented config file. That file is the documentation.

Each release also carries a CycloneDX SBOM per target and a keyless build-provenance attestation, verifiable with:

gh attestation verify dux-linux-amd64.tar.gz --owner SiavZ

The AMQ overlay (multi-agent wrappers, message queue, doctor tooling) is installed separately — see dux-amq/README.md.

Homebrew: not currently published for this fork. Use the shell installer above. (brew install patrickdappollonio/tap/dux installs upstream dux, which lacks the AMQ features this repo documents.)

dux-amq-v0.1.0-rc1

dux-amq-v0.1.0-rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 May 08:44

Verified install

VER=dux-amq-v0.1.0-rc1
curl -fsSLO https://github.com/SiavZ/dux-amq-setup/releases/download/${VER}/${VER}.tar.gz
curl -fsSLO https://github.com/SiavZ/dux-amq-setup/releases/download/${VER}/${VER}.tar.gz.sha256
sha256sum -c ${VER}.tar.gz.sha256
gh attestation verify ${VER}.tar.gz --owner SiavZ
tar -xzf ${VER}.tar.gz
bash ${VER}/dux-amq/install.sh

Reproducibility

sha256: c353befb618b5ce5d0ccbbabb88ec1547d6b6e37df323d7eaa655209b3bc274b

Rebuild locally and compare:

git fetch --tags && git checkout dux-amq-v0.1.0-rc1
bash scripts/release-overlay.sh --version dux-amq-v0.1.0-rc1#dux-amq-v
sha256sum dist/dux-amq-v0.1.0-rc1.tar.gz

Full Changelog: https://github.com/SiavZ/dux-amq-setup/commits/dux-amq-v0.1.0-rc1