Consumer Client Diagrams Guide
This page explains the rendered consumer client diagrams and links each one back to the Mermaid source. For the latest architecture (including process-tracking strategy split), use the Mermaid source as canonical.
Source and Related Docs
- Mermaid source: docs/dev/client(consumer)/consumer_client_diagram.md
- Consumer mixin behavior: docs/dev/client(consumer)/consumer_mixins.md
- Consumer reporting/update cadence: docs/dev/client(consumer)/consumer_update_controllers.md
Diagram 1: Class and Module Relationships

What this shows:
AbstractOpAMPClientcomposes core send/reporting behavior.ClientTransportAuthorizationMixin,ClientRuntimeMixin, andServerMessageHandlingMixincontribute transport/auth, runtime, and server-message handling behavior.- Runtime lifecycle delegation now routes to
ClientSupervisorMixinorClientObserverMixinbased on config. - Concrete clients (
OpAMPClientfor Fluent Bit,FluentdOpAMPClientfor Fluentd,ElasticAgentOpAMPClient,ElasticHeartbeatOpAMPClient,VectorOpAMPClient, andSimulatorOpAMPClient) extend/override where needed. - Elastic Agent, Elastic Heartbeat, and Vector provide specialized lifecycle helpers where the generic supervisor/observer strategy is not enough.
- Update controller implementations (
AlwaysSend,SentCount,TimeSend) control reporting flag reset cadence.
Diagram 2: Runtime Entrypoints

What this shows:
- Script and CLI entrypoints for Fluent Bit, Fluentd, Elastic Agent, Elastic Heartbeat, Vector, and simulator clients.
- The stable
opamp-consumerentrypoint routes throughplugin_loader.load_consumer_plugin(...)based onconsumer.service_type. - Several concrete entrypoints still call
client_bootstrap.run_default_client_main(...)directly. - Shared runtime behavior flowing into
AbstractOpAMPClient+ mixins. - Provider endpoint target still comes from
consumer.server_url.
Diagram 3: Mixin Dispatch Model

What this shows:
- Which methods resolve in mixins vs
AbstractOpAMPClient. - How
ClientRuntimeMixindelegates process lifecycle calls to strategy classes selected fromconsumer.processTracking. - How subclass overrides (for example
FluentdOpAMPClient.add_agent_version) win over mixin/base implementations via MRO.
Diagram 4: Reporting Flags and Update Controllers

What this shows:
- How report flags gate which payload fields are emitted.
- When controller implementations reset flags for future sends.
- How
ReportFullStatefrom the server forces full reporting state.
Diagram 5: Transport URL and TLS Resolution

What this shows:
- How
consumer.server_urlandconsumer.transportselect HTTP vs WebSocket send path. - URL normalization for WebSocket mode (
http->ws,https->wss). - How
consumer.tls.verify_serverandconsumer.tls.ca_filecontrol TLS verification behavior.
Diagram 6: Runtime Process Tracking Strategy

Use the Mermaid source in docs/dev/client(consumer)/consumer_client_diagram.md as the canonical source for this flow.
What this shows:
consumer.processTrackingnormalization and strategy selection.- default/fallback to
Supervisor. - required
consumer.processDetectionRegexwhen usingObserver.
OpAMP