mbrigl/opamp-fleet
Fleet management based on OpAMP. A Rust implementation of OpenTelemetry's OpAMP protocol with an API-first server and a native client that supervises many agents.
- Rust
- OpAMP
- Hexagonal
- Specs + ADRs
- Language
- Rust
- License
- Apache-2.0
- Commits
- 144 commits
- Last update
- Oct 2026
01 / Overview
A Rust implementation of OpenTelemetry’s OpAMP protocol for managing a fleet of telemetry agents. It covers OpenTelemetry Collectors as well as agents that do not speak OpAMP.
The server is API-first: its contract is an OpenAPI-described REST API, and it pushes configuration only to agents whose configuration differs. The client runs as a native OS service and can supervise many processes at once, or act as a gateway for other clients.
The code is one Cargo workspace with three crates: opamp (shared library), server and client.
02 / Architecture
How it fits together
SERVER
Fleet server
REST API · UI · config push
CLIENT
Native OS service
Supervisor and gateway modes
AGENTS
Collectors and agents
OpenTelemetry · via plugins
Server
API-first control plane. Holds the desired configuration, tracks what each agent reports and reconfigures only agents whose configuration differs. OpenAPI REST API with a rudimentary bundled UI, served on port 4320 by default.
Client
One process, installable as a native OS service on Linux, macOS and Windows, with in-place self-update. Supervisor mode runs many supervisors; gateway mode multiplexes other clients onto a small pool of upstream connections.
Hexagonal core
Supervisors are plugins behind ports. A Collector supervisor manages OpenTelemetry Collectors, a custom supervisor manages a foreign agent that does not speak OpAMP.
Connection pool
The server sees only agents, identified by instance_uid, never the connection that carried them. A pool carries many agents over few connections.
03 / Decisions
Specifications and decisions
Written specifications and architecture decision records live next to the code, so the reasoning behind the design stays reviewable.
- docs/SPECIFICATION.mdProblem statement, goals and vocabulary
- docs/CONFORMANCE.mdProtocol baseline and conformance matrix
- docs/adr/Architecture Decision Records
- docs/manual/README.mdUser manual for server and client
- AGENTS.mdRules for coding agents
04 / Getting started
Try it
Prerequisites: VS Code with the Dev Containers extension (or another DevContainer-compatible IDE) and Docker or rootless Podman. Rust stable comes with the Dev Container.
$ git clone https://github.com/mbrigl/opamp-fleet
$ cd opamp-fleet
$ cargo build --workspace
$ cargo run -p server -- --config config/server.toml
$ cargo run -p client -- --config config/client.toml