Repository navigation
Releases: RA1NM4KER/agent-relay
Release list
v0.5.2
This maintenance release focuses on CLI readability and diagnostics.
- Clearer profile authentication tables with separate details and recovery commands.
- Status distinguishes configured fallback order from live checks; doctor separates blockers,
warnings, passed checks, and recovery without changing readiness decisions. - Consistent headings, spacing, copyable actions, and concise help across the CLI. Compatible
interactive terminals use restrained styling;NO_COLOR,TERM=dumb, non-TTY output, JSON,
and internal control paths remain plain. Existing JSON fields are unchanged. - Fixed
relay updatereporting when Homebrew retains multiple kegs: report the verified linked
keg instead of combining every installed version into one string (#27).
v0.5.1
Added
relay updatedelegates supported Homebrew installs to Homebrew and reports the installed
version. Other installs receive manual release instructions;--checkchecks for a newer
stable release without installing it (#6).
Improved
relay statusshows all active sessions and the three most recent dormant sessions, with a
count for older sessions. JSON output and the resume picker retain the full list (#11).- Session displays preserve Claude's native conversation titles and Codex's native thread names
when available (#11, #25). - An eligible configured profile is enough for readiness; irrelevant broken or untrusted
lower-priority profiles produce warnings rather than globally blocking it (#23).
Fixed
- Logged-out Claude profiles are recognized from their supported exit-1 status and show the
affected profile's login command. Normal launch no longer opens login automatically (#26). - Codex refusals distinguish revoked/invalid authentication, timeout, unsupported responses, and
other failures with sanitized diagnostics. Recognized auth rejection shows the isolated
profile's logout/login commands; other UNKNOWN failures do not prescribe login. Profiles and
readiness verify structured usage, and UNKNOWN is refused on resume as well as launch/switch
(#26). - Homebrew updates verify ownership of the running stable/dev executable. Failed or contended
release checks do not report stale data as a successful check. - Human session rows bound provider titles and suppress terminal and bidirectional control
characters; stored titles and session identities remain unchanged.
Known limitations and remaining non-blocking work: project status.
Post-publication Homebrew verification found a non-blocking reporting issue: when an older keg is retained, relay update reports all installed keg versions in its version field. The upgrade and linked v0.5.1 binary are correct. Tracked in #27.
v0.5.0
Codex event-driven exhaustion detection graduates from dogfood-only to default, live-proven end to end against a real natural exhaustion (codex-cli 0.156.0): zero periodic provider usage polling while the local rollout watch is healthy, exactly one authoritative account/rateLimits/read triggered by the real structured event, and a correct automatic handoff to a healthy fallback profile. See CHANGELOG.md for the full release notes.
v0.4.1
Agent Relay v0.4.1 makes slow CLI operations much clearer and helps you know when a new release is available. This is a CLI-UX and polish release — no handoff, exhaustion, or provider-auth behavior changed.
Update-available hints
relay status, relay doctor, and relay setup now show a small hint when a newer stable release exists:
Update available: v0.5.0
Run: brew upgrade agent-relay
The check reads a local cache refreshed at most once every 24 hours, so a normal command never waits on GitHub — a stale or missing cache triggers a detached, best-effort background refresh instead of blocking. Several commands hitting a stale cache at once no longer spawn duplicate background refreshes. Never shown in --json output or a non-interactive terminal, no auto-updates.
Progress feedback for slow commands
relay status, relay doctor, relay setup, and relay profile status/doctor now share one progress indicator whose label updates through each real phase instead of sitting silently or showing a static spinner. It only appears past a short delay, so fast runs never flicker, and it's silent in --json mode.
Reminder: reliability fixes already in v0.4.0
If you're upgrading from before v0.4.0, that release already included: durable provider-account exhaustion tracking across Relay Sessions, fresh provider availability superseding stale exhaustion state after an out-of-band usage reset, and explicit "no eligible fallback" reporting instead of silent looping. See the v0.4.0 release notes for details — nothing in that area changed in this patch.
Install / upgrade
brew install RA1NM4KER/tap/agent-relay
# or, if already installed:
brew upgrade agent-relay
v0.4.0
Agent Relay now keeps Claude Code and Codex work moving across usage limits with safer automatic handoffs and stronger cross-session exhaustion tracking.
Highlights
- Multi-session supervision. A project can hold many independent Relay Sessions at once — different profiles, different providers, side by side — instead of one writer per project.
- Claude ⇄ Codex parity and in-agent control.
relay setup/relay status/relay switchwork the same way for either provider;/relay switch(Claude) and$relay switch(Codex) can move a conversation from inside the session itself, with process-ancestry verification on the Codex side. - Codex handoffs now capture real recent conversation context (via Codex's official
app-serverprotocol), not just repository facts. - Durable, cross-session exhaustion tracking. A strongly-evidenced exhaustion is now remembered per provider account, not just per session, so a fresh session on the same account doesn't have to rediscover it.
relay watch clear --provider-account <profile>clears one explicitly. - Fresh evidence supersedes a stale exhaustion record. If a provider-side usage reset happens out-of-band, Relay now recognizes a fresh, positive reading and clears the stale record instead of continuing to treat a healthy account as exhausted for days.
- Explicit diagnostics when no fallback is eligible, instead of retrying silently: Relay now names why each candidate was rejected, both in a supervised terminal and via
relay why. - Claude's own native-default account (
~/.claude, no separate profile directory) is now a first-class profile, usable as a handoff source or target like any other. - Smoother day-to-day UX: unified progress indicators across slow provider phases, more precise switch-safety checks, and more actionable provider error messages.
See CHANGELOG.md for the full, organized list.
Known limitations
- Linux builds and passes CI but is not yet live-supported or validated (some process-scan code is macOS-specific).
- Automatic handoff away from a real Codex exhaustion (to a healthy fallback) has not yet been observed live end-to-end — detection and evaluation have been, but the one real incident observed had no eligible fallback at the time. See docs/automatic-handoff.md#no-eligible-fallback.
- The Homebrew tap now serves only tagged releases like this one; a separate dev-build channel is not currently distributed via
brew(seedocs/maintainer-dogfood.mdif you want to runmaindirectly).
Install
brew install RA1NM4KER/tap/agent-relayAgent Relay v0.3.0
Agent Relay becomes multi-provider: Claude Code and Codex profiles share one priority order, one
writer per project, and automatic handoff in both directions.
Added
- Codex support: isolated Codex profiles (
relay login,relay setup),relay codex(a new
Relay-managed Codex conversation, symmetric withrelay claude), same-profile Codex resume with
thread verification, and Claude ⇄ Codex handoff as state continuation (a new session seeded from
a Relay state bundle — never presented as the same native conversation). - Automatic Codex handoff: exhaustion is read from Codex's own structured app-server rate limits
(ordinaryUsageAllowed) — immediately before Relay enters a Codex terminal, then periodically
while that terminal is supervised. A freshrelay codexon an exhausted profile skips Codex and
starts on the next eligible profile;relay resumeon an exhausted Codex thread hands off at
once;relay switchrefuses an exhausted or unverifiable Codex target. Unknown never moves
anything. - Automatic Claude handoff that actually fires: the Claude
StopFailurehook starts a one-shot
evaluation itself, and a supervised terminal follows the conversation to the new owner
(relay claude/relay codex/relay resume). - Provider options after
--:relay claude -- --model opus,relay codex -- --sandbox workspace-write, forwarded verbatim, stored per project and never translated between providers.
Flags that would replace something Relay owns — or disable its hooks (--bare,--safe-mode,
--restricted,--setting-sourceswithoutuser) — are rejected with a clear error. - Status-line badge
[Relay · <profile>](switching → <profile>mid-handoff) for managed Claude
sessions, composed with your own status line and colour-aware (NO_COLORrespected). - One global priority order (primary + fallbacks) reconsidered at every exhaustion; the current
writer stays sticky (no eager fail-back).
Fixed
relay status, launch, handoff and session-conflict paths now ask the lease owner's provider
whether a session is live (Claude or Codex), and reportunknowninstead of guessingactive.- Codex liveness/stop cover the interactive
codex resumeprocess, not only the short-lived
codex execthat created the thread. - Claude
--bgjob ids with coloured output,relay resumeattach-vs-resume for a live background
job, and attaching under the lease owner's isolatedCLAUDE_CONFIG_DIR. relay switch --no-attachnow points atrelay resume.
Notes
- macOS is the validated platform; Linux builds and passes CI but is not yet live-supported.
- Automatic handoff from a real Codex exhaustion mid-session is covered by automated tests and has
not yet been observed live; a real exhausted Codex profile has been live-checked for pre-launch
fallback. - After upgrading, re-run
relay integration claude install --profile <name>so the Claude hooks
and status line point at the newrelaybinary.
Agent Relay: latest green main
Rolling pre-release holding the packaged build of each green commit on main (used by the maintainer's Homebrew formula). File names carry the commit SHA; see docs/maintainer-dogfood.md. Not a versioned release.
v0.2.0
Agent Relay keeps a Claude Code session moving when one configured account reaches a corroborated
usage limit: it moves the same conversation, same context, to a backup account. Everything runs
locally — credentials stay entirely Claude-owned (Relay only launches Claude's own official
login/logout, never reads or stores a token, cookie, or key).
Quickstart
brew install RA1NM4KER/tap/agent-relay
relay setup
relay claudeFull walkthrough: docs/getting-started.md
What's new in v0.2.0
relay setup/relay claude: a guided first-run wizard and a single daily entry point — no
more manually managingCLAUDE_CONFIG_DIR, profile adoption, writer leases, or session ids by
hand.relay status/relay profiles/relay login/relay logout: plain-language status and
friendly wrappers around Claude's own official login/logout.- Herdr pane/workspace binding is now written automatically by
relay claude. - Packaging: prebuilt macOS binaries (this release), a Homebrew tap, and a Herdr plugin manifest
now embedded in therelaybinary itself —relay integration herdr installno longer needs a
source checkout.
See CHANGELOG.md for the full
list (this release also includes all of M2C.1's automatic usage detection and M3's Herdr
integration, both previously unreleased).
Supported / live-validated
- macOS (Apple Silicon and Intel binaries below), Claude Code 2.1.276–2.1.278.
Experimental / not yet validated
- Linux: builds and passes the test suite in CI; no Linux binaries are published in this
release and Linux has not been exercised against a real Claude Code install. Building from
source works today if you want to try it (cargo build --release); treat it as unvalidated.
Known limitations
- Genuine (non-simulated) provider quota exhaustion has not been observed end-to-end — all
handoff validation to date uses Relay's own--simulate-usage exhaustedflag, deliberately, to
avoid burning a real account's quota. - Claude's transcript layout and
--resumebehavior are not a stable public API; Relay gates on
validated versions and fails closed on anything else. - A rare, intermittent
untracked_writer_detectedrace remains documented but unpatched (no
deterministic reproduction yet). - See the README's Limitations section for
the complete, current list.
Verifying a download
shasum -a 256 -c agent-relay-v0.2.0-<platform>.tar.gz.sha256or check against SHA256SUMS.txt below.