Repository navigation
Releases: SiavZ/yaran
Release list
dux-amq v0.1.1 — codex resume fix, reconnect logging, jcode provider
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-amqoverlay. Installing upstream'sduxwill not give you those features.
Fork releases are taggeddux-amq-vX.Y.Zso they never collide with upstream's tags.
Shell:
curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | bashBy 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 bashEvery 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 SiavZThe 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
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--jsonand--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 previousdux-amq-v0.1.0-rc1tag could never have built. - Dropped
cargo-edit, which cannot install on the pinned 1.88.0 toolchain (smol_str 0.3.4requires rustc 1.89) and broke every build job on this workflow's first-ever run. - New
verify-releasejob downloads the artifact, verifies its checksum, and asserts the binary exposes the fork-onlypeerandsession purgesubcommands — so an upstream-lineage release fails the build instead of shipping silently. install.shfalls back to/releaseswhen/releases/latestreturns 404, and reports an actionable error rather than a bare failure.
Security
- Cleared a yanked
chacha20 0.10.0and RUSTSEC-2026-0253 (use-after-free inlru'sLruCache::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 SiavZPlatforms
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-amqoverlay. Installing upstream'sduxwill not give you those features.
Fork releases are taggeddux-amq-vX.Y.Zso they never collide with upstream's tags.
Shell:
curl -sSfL https://github.com/SiavZ/dux-amq-setup/releases/latest/download/install.sh | bashBy 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 bashEvery 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 SiavZThe 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
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.shReproducibility
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.gzFull Changelog: https://github.com/SiavZ/dux-amq-setup/commits/dux-amq-v0.1.0-rc1