agentsfleet is an open-source runtime for AI agents that wake on production events. An agent starts on an event — a pull request, an incident, a deploy — reads your code, telemetry, internal docs, and live control-plane state, finds the root cause, and opens a scenario-backed fix, on the platform's model or a key you bring. A human approves, then it ships the fix or drafts the customer reply. Every step is a replayable log.
- Human approval, by design — the agent investigates and proposes; a person approves before anything ships
- Replayable event logs — audit every action and decision
- Bring your own provider keys — no vendor lock-in on inference
- Runs locally or against production — same agent, same evidence
Agents are defined in Markdown playbooks with tools, triggers, and investigation steps. Open-source runtime, hosted control plane; bring your own model key or run on the platform's.
Need access? Join the waitlist. The website's Dashboard links currently open the waitlist, and the shell installer command is hidden while unavailable.
npm install -g @agentsfleet/cli
agentsfleet loginDefine an agent in Markdown, connect a webhook, and get an evidenced diagnosis and a proposed fix on your next pull request or incident. Full walkthrough at docs.agentsfleet.net/quickstart — free to try, no card, under five minutes.
| Directory | What |
|---|---|
rustd/ |
Rust workspace — the agentsfleetd control plane (afd_* crates, one per plane) and the agentsfleet-runner execution daemon (afr_* crates). |
ui/packages/app/ |
Dashboard — Next.js, Clerk auth |
ui/packages/website/ |
Marketing site — agentsfleet.net |
ui/packages/design-system/ |
Shared UI components |
cli/ |
Command-line interface (CLI) — install, manage agents, tail runs |
public/openapi.json |
OpenAPI spec — committed and edited by hand |
schema/ |
Postgres migrations |
playbooks/ |
First setup, deployment, verification, and operations |
Prerequisites: Rust 1.99.0 (pinned by rustd/rust-toolchain.toml, which rustup installs on the first cargo run inside rustd/) · Docker (Postgres, Dragonfly, QStash) · Bun ≥1.4 · Clerk dev project · 1Password CLI for secrets
git clone https://github.com/agentsfleet/agentsfleet.git
cd agentsfleet
# Populate .env before running make up. See playbooks/founding/01_bootstrap/001_playbook.md for the full bootstrap.
make up # Postgres + Dragonfly + QStash + agentsfleetd (auto-migrates DB)
# Install in this order. The root install alone does NOT reach the workspace
# packages, and the coverage lane then fails resolving `next/headers` — a
# failure that reads like a code defect and is not one.
bun install
(cd cli && bun install && bun run build)
for pkg in ui/packages/*/; do (cd "$pkg" && bun install); done
cd ui/packages/app && bun run devRun provision-env-1password before local tests. The shell sources
~/.config/agentsfleet/.env, which names the UI, runner, and daemon files under
that directory through AGENTSFLEET_UI_ENV_FILE, AGENTSFLEET_RUNNER_ENV_FILE,
and AGENTSFLEET_RUSTD_ENV_FILE. Local UI and daemon tests read their files
directly; the runner path is available to tests that need it. No worktree
environment-file symlinks are needed. The app refuses to guess a backend when
NEXT_PUBLIC_API_URL is unset.
Verify:
make lint-all
make test-unit-all
make test-integration-rustd # needs Docker: live Postgres + Dragonflyagentsfleet defaults to production. Point it at your local stack with the --api flag, or persist it via the environment:
agentsfleet --api http://localhost:3000 <command>
export AGENTSFLEET_API_URL=http://localhost:3000 # or set it oncegit config core.hooksPath .githooksProject facts live in AGENTS.md. The operating model and the
deterministic gate scripts are committed alongside them —
.orly/AGENTS.md, .orly/dispatch/, and .orly/audits/ — materialised
by orly and recorded in
.orly/orly.json. A clone carries its own rules; nothing resolves out of a
developer's home directory.
Install orly at the version this repository records, so a local run and Continuous Integration grade against the same rules:
npm install -g "@agentsfleet/orly@$(jq -r .orly_version .orly/orly.json)"
orly doctor # report drift between the lock and the tree
orly update --no-hooks # re-materialise at the installed version
orly gate work # what the pre-commit hook runs--no-hooks is not optional here: this repository owns .githooks/pre-commit
and .githooks/pre-push, and orly declines to overwrite hooks it did not
write.
make harness-verify runs shared gates from .orly/audits/ and repository-owned checks from audits/.
Read about architecture, start with the operator playbooks, or jump into local development.
MIT — Copyright (c) 2026 agentsfleet.
