← All repositories

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
View on GitHub

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

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.

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