Fleet
Write a Python automation once. Run it across a fleet of machines —
self-healing, observable, and wired together end to end.
Fleet is a distributed automation framework. You write the work as a small Python class; Fleet distributes it to your workers, keeps them alive, restarts the ones that fall over, and streams their output wherever it needs to go — including into other automations, across hosts, with zero glue code.
Proven in production as the engine behind a Cloudflare Turnstile-solving farm — 8 hosts, 42 workers, 200+ operations per minute.
Why Fleet
- One control plane, many workers. The master is the single source of truth for configuration. Change it in one place and every worker reconciles to match — no redeploys, no manual restarts.
- Self-healing by design. A crashed slot is respawned on the next tick. A worker that drops off reconnects and resumes. A task that fails is retried with exponential backoff and dead-lettered after its attempt budget.
- Automations compose across machines. One workload's output stream is another's input — cross-host, type-checked, and durable. You wire pipelines, not plumbing.
- A browser pool that beats anti-bot. A built-in headed-Chromium pool ships in the box: statistically-weighted fingerprinting, per-flow proxy routing with a real Chrome TLS signature, and Cloudflare Turnstile solving.
- Backends that fit the deployment. Redis for horizontal scale, SQLite for a single VPS, in-memory for tests — one
Backendinterface, identical semantics, swap by URL. - Operable from day one. Scoped auth tokens, a live dashboard, a Prometheus
/metricsendpoint, and OpenTelemetry tracing are all wired up. REST and WebSocket APIs, plus a full CLI. - Extend by installing a package. Automations, proxy providers, and anti-bot solvers are discovered via entry-points. Ship one as a pip package and Fleet finds it automatically.
How it works
One master runs on one host — where you set what to do and read what got done. Many workers, one per machine, check in, pull their config, and do the work. The work itself is a small Python class you write, ship as a pip package, and install on the machines; Fleet discovers it on its own and hands it out.
Quickstart
pip install fleet-framework
A complete automation is about 30 lines:
import asyncio
import httpx
from fleet.core import BaseConfig, ContinuousAutomation, register
class PingerConfig(BaseConfig):
url: str
interval_seconds: float = 5.0
@register("pinger")
class Pinger(ContinuousAutomation[PingerConfig]):
Config = PingerConfig
async def run_slot(self, ctx):
async with httpx.AsyncClient(proxy=ctx.proxy) as client:
while not ctx.shutdown.is_set():
r = await client.get(ctx.config.url)
await ctx.emit({"status": r.status_code})
await asyncio.sleep(ctx.config.interval_seconds)
Full walkthrough — master, worker, config, output — at http://fleet.hackmap.win/getting-started/quickstart.
Documentation
Full docs live at http://fleet.hackmap.win/.
- Introduction
- Installation · Quickstart · Your first automation
- Architecture · Automations · Primitives
- Continuous automations · Batch automations · Inter-automation comms
- Browser-based automations · Deployment
- REST API · WebSocket protocol · CLI
- Auth · Observability · Troubleshooting
License
MIT. See LICENSE.
Metadata
Release files for fleet-framework 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fleet_framework-1.2.0.tar.gz | 161.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fleet_framework-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 360.1 kB
Release files / fleet_framework-1.2.0.tar.gz
| Download URL | fleet_framework-1.2.0.tar.gz |
|---|---|
| Size | 161.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f01329f04c15148177db9f6777773efbc019e1af3fffaba9e2f7f99d63721e1
|
|
BLAKE2b-256 checksum How to use checksums |
a5d29ce690228358fd0c3a0de445b947f7772b33964423b8304c4e50fa380e04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fleet_framework-1.2.0-py3-none-any.whl
| Download URL | fleet_framework-1.2.0-py3-none-any.whl |
|---|---|
| Size | 199.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c626ba76ca231919250e74143fdf94858ff7767b620b26f73bd4fff96a29e9fa
|
|
BLAKE2b-256 checksum How to use checksums |
7f6e999e0c376c18c9b32687a65ec88aab0a8bfd0d2d965dcb7186010ce22058
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|