Apra-fleet

Betreiben Sie eine Flotte von KI-Agenten auf Ihren Geräten, Ihren Anbietern, Ihren Workflows.

Dokumentation

apra-fleet: run a fleet of AI agents across your devices, your providers, your workflows.

apra-fleet

Run a fleet of AI agents across your devices, your providers, your workflows.

What Kubernetes did for containers, apra-fleet does for AI agents: scheduling, credentials, isolation, and observability for an agentic workforce -- on any machine, anywhere, using every LLM provider at once.

CI License: Apache 2.0 Platform MCP Ask DeepWiki

Quick Start - Live Demo - How It Works - fleet-sprint Getting Started Guide - Website


apra-fleet fleet-sprint dashboard, real recording: the sprint's own integration tester finds two real bugs, files them against itself, then a second cycle plans, fixes, and closes them -- captions burned in.

This repository is built by the product you are looking at. An autonomous apra-fleet workflow plans, codes, reviews, tests, and ships this codebase in multi-hour sprints -- filing bugs against itself and fixing them. The recording above is a real run, not a mockup.


Why a fleet?

Running one AI agent is a demo. Running fifty -- across a MacBook in the office, a GPU box in the lab, three cloud VMs, and your CI -- is an operations problem nobody else has solved:

  • Which machine runs which agent? Real devices, not throwaway sandboxes: registered, credentialed, health-checked members you already own.
  • Which model does which job? Claude for review, a cheap tier for mechanical edits, a local vLLM model for private data -- all in one fleet, routed by cost tier, switchable per task.
  • Who watches the agents? Durable workflows with supervisors, watchdogs, reservations, and live dashboards. Agents that die get detected. Work that stalls gets resumed. Nothing runs silently.
  • Who holds the keys? Secrets entered out-of-band, never visible to any model. Per-provider permission composition. Network egress policy per credential.

One control plane. Any device. Any model. Any workflow. Any domain.

What you get

PillarConcretely
Any deviceRegister any Windows / macOS / Linux machine (local or over SSH) as a fleet member in one command. Cloud members auto-start on demand. Windows members are fully supported for dispatch, command execution, and background long-running tasks (launched detached via WMI).
Any modelClaude, Codex, Gemini, Copilot, Antigravity, local models (any OpenAI-compatible endpoint via OpenCode) -- mixed freely. Tier-based routing (cheap / standard / premium) keeps cost governance built in. Cross-provider review is a quality mechanism: a different model, with different blind spots, checks every change.
Any workflowWorkflows are durable programs, not prompt chains: multi-hour, resumable, observable, with member reservations and atomic state. Write your own; ship it to the fleet.
Any domainNot just software development. The pattern fits wherever work decomposes into agent-sized pieces that need orchestration and an audit trail: nightly retail replenishment (reconcile inventory deltas, draft purchase orders for sign-off), logistics exception handling (triage a delayed shipment, re-book, notify), healthcare intake (summarize referrals, check completeness, route), back-office runs (invoice matching, compliance evidence collection). Software engineering is the vertical running today -- your domain is a workflow away.
apra-fleet topology: one control plane dispatching to six heterogeneous member devices across providers and operating systems

Watch a fleet work

Our flagship workflow, fleet-sprint, develops software autonomously: plan -> develop -> review -> deploy -> integration-test -> harvest, in cycles, until the goal is met or the evidence says stop.

It is not a toy. It builds apra-fleet itself:

  • Multi-cycle sprints running for hours, unattended
  • 2,300+ unit tests and an 81-file integration suite against real backends
  • Files bugs against itself, decomposes them, fixes them, and blocks its own release until quality gates pass
  • Every dispatch, verdict, and dollar visible live on the dashboard
  • Every sprint's raw child stdout/stderr is captured to a per-sprint log and linked from the dashboard, so a run's output is traceable even if it crashes before reporting anything back

A fleet that has run in production:

pm-1      Opus (premium)      orchestrator
doer-1    Sonnet (standard)   feature work
doer-2    Antigravity         large-context tasks
reviewer  Opus (premium)      final review

The engine does not know what a "sprint" is; it knows how to run your workflow reliably across your fleet (see Any domain above).

Quick start (5 minutes)

1. Install -- one command via npm (Node.js 22+), or grab the standalone installer binary for your platform from Releases and double-click it (installation is the default action):

npm install -g @apralabs/apra-fleet
apra-fleet                   # installs for Claude Code (default)
apra-fleet --llm agy         # or OpenCode/Codex/Copilot/Gemini
cd ~/.apra-fleet/bin && apra-fleet start             # start the apra-fleet

2. Connect your agent. Load the fleet server in Claude Code with /mcp (or restart your provider CLI). Your agent now has a fleet.

3. Register members -- in plain language. apra-fleet is driven conversationally through any MCP-capable agent:

"Register a local member called doer. Register another called reviewer. Pair them."

"Register 192.168.1.10 as build-server. Username akhil, work folder /home/akhil/projects/myapp."

Remote passwords are collected out-of-band -- typed into a separate terminal, never the chat -- used once to set up SSH keys, then forgotten.

4. Run your first workflow:

apra-fleet workflow hello-world

Then point the fleet at real work:

apra-fleet workflow fleet-sprint \
  --issue my-project-epic --members doer \
  --branch fleet-sprint/first-run --base main

Open the dashboard, watch your fleet PLAN->BUILD->REVIEW->TEST->SHIP in a loop till closure

New to fleet-sprint? Read the fleet-sprint Getting Started Guide (Markdown if you're reading this on GitHub -- PDF) -- a plain-English walkthrough of what it does, what you need to prepare (beads backlog, deploy.md, test playbooks, member registration), how to launch and monitor a sprint, and what's automated versus what's still your call.

Running fleet-sprint after npm install: the apra-fleet workflow fleet-sprint ... command above is the same one command for everyone -- whether you installed via npm install -g @apralabs/apra-fleet, the standalone binary, or a git-clone dev checkout. There is no separate fleet-sprint command to install or remember. See the full flag reference for every option.

How it works

Layered Architecture

apra-fleet layered architecture stack: dependencies from OS primitives up to autonomous engineering orchestrators

Component Docs: fleet-sprint | auto-sprint.js | apra-fleet-client | apra-pm | apra-fleet-mcp | Agent Roles

Fleet Dispatch Topology

flowchart LR
    CP["Control Plane<br/>(Server, Engine, Supervisor)"] -->|Dispatch & Sync| M1["MacBook<br/>(Claude)"] & M2["Linux GPU<br/>(vLLM)"] & M3["Cloud VM<br/>(AGY)"] & M4["Windows<br/>(OpenCode)"]
  • Fleet server: the control plane. Registers members, dispatches commands and prompts, moves files, brokers credentials. Speaks MCP, so any MCP-capable agent can drive a fleet.
  • Members: real machines running provider CLIs. Composes provider-native permissions before every dispatch; unattended modes are scoped, never blanket.
  • Workflow engine: runs workflow programs with phases, retries, turn budgets, resumable sessions, and per-activity persistent state.
  • Supervisor: always-on layer -- launch & stop sprints over HTTP, member reservation ledger, crash watchdog, run history.

Explore with agents. Operate with programs.

There are two ways to orchestrate agents, and apra-fleet is built on the observation that you need both -- at different stages of a workflow's life:

  • Exploration mode. While a workflow is still being discovered, let an LLM orchestrate: flexible, adaptive, and token-hungry -- every step is a decision, and every decision costs thinking.
  • Operation mode. Once you know what must happen, the control flow becomes a deterministic workflow program. Shell, git, and file steps run through execute_command -- zero tokens. The model is invoked only at the corners that genuinely require judgment (execute_prompt): review this diff, plan this backlog, decide this exception.
Cost per apra-fleet e2e run: four real LLM-driven runs ranging $0.46-$3.05, then ~$0.00 / run forever after switching to a deterministic workflow.

That is not a projection -- it is this repository's own e2e setup+teardown step, before and after we hardened it. Development tokens are not operating tokens: pay once to discover the workflow, then run it free.

LLM-orchestrated (explore)Workflow-orchestrated (operate)
Control flowthe model decides each step (tokens)deterministic program (free)
Shell / git / file stepsnarrated through the modelexecute_command, zero tokens
Where the model runseverywherejudgment nodes only (execute_prompt)
Cost curvescales with every stepscales with thinking only
Failure modedrift and silent retriestyped errors, resumable state

The collapse is two-dimensional. As a workflow hardens, control flow moves from model to program -- and the judgment nodes that remain move from frontier models to cheaper ones, because a well-specified task no longer needs discovery-grade reasoning. Develop a workflow with Claude; operationalize it on OpenCode against a local or OpenRouter model. Same fleet, same workflow -- swap the members. Tier routing makes it a registration change, not a rewrite.

Only a fleet makes that trade possible. Single-provider tools cannot leave their vendor; in-process frameworks cannot move orchestration out of the token path. Because apra-fleet's unit of execution is the member -- a machine plus a provider, swappable at registration -- the same hardened workflow runs on frontier models the day you design it and on commodity models every day after.

fleet-sprint is this principle, lived: it began as LLM-orchestrated exploration; each discovered pattern was hardened into the deterministic engine; today the engine drives hour-long autonomous runs in which models are consulted only as planner, doer, reviewer, tester, and harvester.

Compare to alternatives

ToolOverlapWhere apra-fleet differs
Single-agent coding assistantsAI writes codeA fleet adds agents that review, test, and deploy each other's work -- across vendors.
CI self-hosted runnersRuns work on other machinesConversational and stateful, not pipeline-triggered; agents carry context between phases.
SkyPilot / dstackMulti-machine computeCoordinates agents and their context, credentials, and permissions -- not just jobs.
Google A2AAgent-to-agent messagingAn opinionated orchestration and operations layer, not just a transport.
Agent frameworks (LangGraph, CrewAI, ...)Multi-agent logicThose compose agents inside one process; apra-fleet operates agents across real machines, providers, and days-long workflows.

When NOT to use it: a one-off single-file change needs no fleet.

Security model, in one paragraph

Secrets are entered out-of-band into a credential store and referenced as {{secure.NAME}} -- resolved server-side at execution, never visible to any LLM or log. Credentials scope to members, expire on TTL, and can carry a network egress policy (allow / deny / confirm). Every member runs with composed, provider-native permission files -- allow-listed tools, not god-mode. VCS access is provisioned and revocable per member. Permission composition verifies its own delivery: a grant is read back off the target member and structurally compared against what was intended before it is reported as applied, so a failed or partial write is surfaced as an explicit failure rather than a false success.

The packages

PackageWhat it is
apra-fleetThe fleet platform: server, CLI, member management, credentials, workflows runtime
packages/apra-fleet-seThe software-engineering vertical: fleet-sprint engine, agent contracts, integration suites
packages/apra-fleet-workflowWorkflow authoring runtime: state, viewer, checkpointing
packages/fleet-api-contractTyped API contract shared by server and clients

Status and roadmap

apra-fleet is under active development -- by its own fleet. Current focus: hardening autonomous sprint execution (the toughest workflow we know of), supervisor-orchestrated multi-sprint operation, and the workflow SDK for third-party verticals.

Documentation

TopicLink
fleet-sprint Getting Started Guide (start here, plain English)Website - Markdown - PDF
Codebase wiki (architecture, internals, AI Q&A)DeepWiki
Install, uninstall, the --llm flagdocs/install.md
Choosing a provider (roles, gotchas, mixing providers, OpenCode/local models)docs/provider-guide.md
Transport, service mode, and supported interfacesdocs/transport-and-service-mode.md
Cost model (tiering, shell-over-prompts, measured token spend)docs/cost-model.md
The PM skill (doer-reviewer sprints, /pm commands)docs/pm-skill-overview.md
FAQdocs/FAQ.md
Troubleshootingdocs/troubleshooting.md
Keeping Fleet updated (apra-fleet update)docs/features/update.md
Live member activity (apra-fleet watch, logging.previewChars)docs/features/watch.md
Secure credentials and passwordsdocs/features/oob-auth.md
Member category and tagsdocs/features/member-tags.md
Enabling SSH on a remote machine (if it does not have it yet)docs/ssh-setup.md
Git authenticationdocs/design-git-auth.md
Cloud computedocs/cloud-compute.md
Architecturedocs/architecture.md
Hub-spoke cloud migration plan (historical; see tier-3 ownership ADR)docs/hub-spoke-master-plan.md
Tier-3 ownership decision (fleet-dashboard vs src/hub-service/)docs/adr-tier3-ownership.md
Shared hub/dashboard API contract packagepackages/fleet-api-contract/README.md
Workflow engine internals (agent()/parallel()/pipeline(), journal, budget)packages/apra-fleet-workflow/docs/apra-fleet-workflow-architecture.md
Writing and running workflow scriptspackages/apra-fleet-workflow/docs/workflow-guide.md
Authoring a SEA-embedded apra-fleet workflow (manifest, entry contract, launcher env vars)docs/authoring-workflows.md
Workflow launcher fleet-server resolution order (HTTP singleton vs. stdio)docs/adr-workflow-server-resolution.md
Running fleet-sprint (full flag reference; identical for npm-install, standalone binary, and git-clone dev checkout)packages/apra-fleet-se/fleet-sprint/docs/README.md
Auto-sprint overview (autonomous plan-develop-review-publish loop)packages/apra-fleet-se/docs/overview.md
Auto-sprint CLI referencepackages/apra-fleet-se/docs/cli-reference.md
Auto-sprint internals (cycle loop, stall detection, budget, topology)packages/apra-fleet-se/docs/architecture.md
Auto-sprint agent role contractspackages/apra-fleet-se/docs/role-contracts.md
MCP client SDK overview (transports, ApraFleet API)packages/apra-fleet-client/docs/overview.md
MCP client SDK API referencepackages/apra-fleet-client/docs/api-reference.md
MCP client SDK getting startedpackages/apra-fleet-client/docs/getting-started.md

Community

If Apra Fleet helped you ship faster with better quality, please star the repo -- it helps others find it.

Development

Build from source (also the path for Intel Macs):

git clone https://github.com/Apra-Labs/apra-fleet && cd apra-fleet
npm install && npm run build && npm test

See CONTRIBUTING.md to contribute.

License

Apache 2.0 -- see LICENSE.


Stop babysitting agents. Start operating fleets.

Quick Start - GitHub Issues - Apra Labs