Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Drove
Drove is a versioned workspace reconciler. A checked-in Drovefile describes the workspaces, tabs, panes, agents, and setup tasks a repository needs. Drove compiles that file to a canonical model, compares it to the live state of a backend, and reports or applies the difference.
Drove is backend-agnostic. Herdr is the backend available today. A second backend for the Radiator hub is in progress, and the model is designed so other backends can follow. Each backend declares what it supports, and Drove plans only the operations that backend can perform.
Drove is intentionally on demand. It reads the live state and changes it only when you run it.
Install
drove ships prebuilt binaries for macOS (Intel and Apple silicon), Linux
(x86_64 and arm64) and Windows (x86_64) with every release. You also need a
supported backend; Herdr 0.8.2 or newer is the one available today.
Homebrew (macOS and Linux):
Shell installer (macOS and Linux):
|
Windows (PowerShell):
powershell -c "irm https://github.com/radiator-engineering/Drove/releases/latest/download/drove-installer.ps1 | iex"
With Cargo (needs Rust 1.88 or newer):
Or from a checkout of this repository:
Every GitHub release also carries the raw binaries and their SHA256 checksums. See docs/releasing.md for how a release is cut.
Quick start
Add a Drovefile to a repository:
backend(...) declares which backend the project reconciles onto; herdr is the Herdr flavor's namespace for placement (tabs, splits, ratios). A pane can run a command, host a coding agent, and gate its readiness on output or a port. A task runs a one-shot setup step with a check that lets Drove skip it once it has run. See the Drovefile reference for every resource and field, and examples/log-driven/Drovefile (or this repository's own Drovefile) for a full multi-agent workspace.
Then run:
drove with no subcommand resolves the profile named default (or the file's only profile), starts the target Herdr session if it isn't already running, applies the plan, and brings the session's first workspace to the front — attaching your terminal to it if you're not already inside Herdr. It prints one summary line: profile default: N created, M changed, K tasks run, in sync, or profile default: already running, brought to front. Give a profile name to target a different one: drove other-profile.
Other commands:
Use --profile NAME (an alias of the positional profile), --backend ID / --target NAME (or --session NAME on Herdr) to override the declared backend and instance, and --file PATH when Drove cannot find the Drovefile by searching parent directories.
Development
Run make ci to check formatting, clippy, tests, docs, and the security audit locally. These are the same checks CI runs.
Safety model
- Drove changes only resources recorded in its machine-local ownership state.
- Drove leaves resources it does not own untouched.
- Removing a declaration detaches the resource. Drove does not delete the live thing.
- A changed pane command restarts in place. Only a topology change replaces a tab, which discards its scrollback and running processes, so it requires
--allow-replace. - A new or changed task requires approval before its check or run command executes. Review the bytes, then approve with
drove up --yesor interactively. - Drove stores ownership state and approvals outside the repository.
Exit status
0: in sync, or reconciled successfully1: invalid configuration or apply failure2: a valid profile is out of sync3: the backend is not running or its socket cannot be reached
See the Drovefile reference, migration guide, v2 to v3 upgrade guide, and product spec.