* fix: drain event subscriptions and report history loss refs #4178 Root cause: Each subscription emits at most one matching event per 100 ms poll, while the shared event history retains only 512 entries. Bursts therefore build a backlog, and an evicted cursor silently resumes at the oldest retained event with no indication that earlier events were lost. Fix: Drain the bounded retained batch for lifecycle and agent-status streams. Check for history loss while holding the same lock used to read events, then return an events_lost error and close only the affected subscription. Keep event envelopes, request shapes, endpoint codecs and wait behavior unchanged. Preserve state filters, initial snapshots, event order and the existing cadence for snapshot-only subscriptions. Document resubscription and snapshot recovery in the unreleased API docs. Add regressions for burst draining, startup-window loss, retention bounds, status ordering and filtering, and unavailable history. Validation: Three socket regressions fail before the fix and pass afterward. Thirty-two focused API tests and five repeated rounds of socket tests pass. The real current-master comparison receives 516 of 600 events before the fix and 600 of 600 after it in about 0.97 seconds. A paused reader receives the explicit error, and a new subscription plus snapshot recovers successfully. Full native just ci on the dependency-inclusive branch passes 3631 Rust tests with six default skips, formatting, all-target Clippy, 112 maintenance tests, six architecture tests and 39 integration-asset tests. All seven docs contract tests pass. No retries or additional exclusions were used. Local Windows cross-lint was not run because its SDK is unavailable. * test: cover subscription isolation across platforms refs #4178 --------- Co-authored-by: JJ Liebig <jonathan.liebig@gmail.com>
herdr
herdr.dev · install · quick start · docs
English · 简体中文
https://github.com/user-attachments/assets/043ec09f-4bdd-41d5-aee0-8fda6b83e267
the runtime your coding agents live on.
- detach without stopping work — herdr keeps terminals running in a background server when you close the client or lose your SSH connection. after a server or machine restart, herdr restores the saved layout and can resume supported agent sessions; the original processes do not survive. session state →
- several machines, one window — keep local work and saved ssh machines together, with a combined agent list and independent reconnects. remote machines →
- never hunt for the stuck one — every pane is marked working, blocked, or idle. when an agent stops and needs an answer, herdr says so.
- agent-native — agents drive herdr through the cli and socket api: they can spawn panes, prompt each other, and wait until another agent is genuinely blocked. agent skill →
- runs what you already run — claude code, codex, cursor, opencode, grok and the rest. herdr doesn't wrap or replace them; it owns their terminals.
- keyboard and mouse, both first-class — tmux-style prefix keys and click, drag, split. pick per moment, not per tool.
- plugins — extend panes and workflows. browse the marketplace →
- one rust binary, no electron — runs in whatever terminal you already use.
install
curl -fsSL https://herdr.dev/install.sh | sh
or brew install herdr · mise use -g herdr · windows: powershell -ExecutionPolicy Bypass -c "irm https://herdr.dev/install.ps1 | iex" · endpoint-protected Windows · binaries
then start it where the work lives:
herdr
run your agents, split panes, walk away. ctrl+b q detaches, herdr reattaches. quick start →
docs
everything lives at herdr.dev/docs: quick start · concepts · supported agents · keyboard · configuration · session state · connecting machines · remote · integrations · plugins · socket api
thanks
every past sponsor and backer is listed in SPONSORS.md — thank you 🐑
enterprise / partnership: hey@herdr.dev
agent instructions
if you are an ai agent helping with this repository, read AGENTS.md before making changes and read CONTRIBUTING.md before opening issues or PRs.
development
git clone https://github.com/herdrdev/herdr
cd herdr
cargo build --release
just test # unit tests
just check # formatting, tests, and maintenance checks
license
Herdr is licensed under the Apache License 2.0.
