The following represents a brain dump of things that we want to/need to do. The ToDos are the primary focus, but may not be delivered immediately as we work toward a minimal implementation.
The following is a summary of the features based on the message exchange and the progress made, gaps and things that aren’t in our plans.
Here’s a markdown table with one row per AgentToServer message field:
| Field | Spec Status | Implementation Status | Spec Description | Implementation Notes |
|---|---|---|---|---|
instance_uid |
Stable | Done | Globally unique identifier of the running Agent instance. Must be 16 bytes, generated using UUID v7. Must be set on every message. | |
sequence_num |
Stable | Done | Monotonically incrementing counter (by 1 per message) so the Server can detect missed messages. | |
agent_description |
Stable | Done | Describes the Agent: its type, version, OS, and where it runs. Should be omitted if unchanged since last message. | |
capabilities |
Stable | Done | Bitmask of AgentCapabilities flags declaring what the Agent supports. Must always be set. |
|
health |
Beta | Done | Current health of the Agent and its sub-components. May be omitted if unchanged since last message. | Basic Fluent API interrogation is used |
effective_config |
Stable | ToDo | The Agent’s current active configuration (may differ from the remote config). Should be omitted if unchanged since last message. | We use the metrics to get health of sources. |
remote_config_status |
Stable | Inprogress | Status of the last remote configuration received from the Server. Should be omitted if unchanged since last message. | |
package_statuses |
Beta | Not Planned | List of Agent packages and their installation/update statuses. Should be omitted if unchanged since last message. | Makes more sense with Fluentd as greater package portfolio |
agent_disconnect |
Stable | Done | Must be set in the last AgentToServer message before the Agent disconnects. |
|
**flags** |
Stable | Done | Bitmask of AgentToServerFlags. Currently includes RequestInstanceUid to ask the Server to assign a new instance UID. |
|
connection_settings_request |
Development | Long Term | A request from the Agent to initiate creation of new connection settings (agent-initiated CSR flow). | |
custom_capabilities |
Development | Done | Declares custom/extension capabilities supported by this Agent. | This is support the ChatOps concept. Documentation provided on how to add your own. |
custom_message |
Development | Done | An arbitrary custom message sent from the Agent to the Server, scoped to a declared custom capability. | This is support the ChatOps concept |
available_components |
Development | Not Planned | Lists the components available in the Agent. Should only be set when ReportsAvailableComponents capability is declared. |
|
connection_settings_status |
Development | Not Planned | Reports the status of connection settings previously offered by the Server. Should be omitted if unchanged since last message. | This would be invasive to Fluent Bit |
Here’s the markdown table for ServerToAgent message fields:
| Field | Spec Status | Implementation Status | Spec Description | Implementation Notes |
|---|---|---|---|---|
instance_uid |
Stable | Done | The Agent instance identifier. Must match the instance_uid previously received in the AgentToServer message. Used to route messages when multiple Agents share a single connection. |
|
error_response |
Stable | Done | Set when the Server encountered an error processing an AgentToServer message. When set, all other fields (except instance_uid) must be unset. |
|
remote_config |
Stable | Inprogress | Set when the Server has a remote configuration offer for the Agent. | |
connection_settings |
Beta | Long Term | Set when the Server wants the Agent to change one or more client connection settings (destination, headers, certificate, etc.). | |
packages_available |
Beta | Not Planned | Set when the Server has packages to offer to the Agent for download/installation. | |
**flags** |
Stable | Partial | Bitmask of ServerToAgentFlags. Includes ReportFullState (asks Agent to resend full status, e.g. after Server restart) and ReportAvailableComponents (asks Agent to send full component details rather than just a hash). |
|
capabilities |
Stable | Done | Bitmask of ServerCapabilities flags. Must be set in the first ServerToAgent message; may be omitted (set to 0) in subsequent messages. |
Advertisement is config-driven; see provider.allow-remote-config, provider.allow-effective-config, provider.allow-connection-settings, and provider.allow-connection-settings-request. |
agent_identification |
Stable | Done | Used to override the Agent’s instance_uid. When new_instance_uid is set, the Agent must adopt it for all further communication. |
|
**command** |
Beta | Done | Set when the Server wants the Agent to perform a command (currently only Restart). When set, all fields other than instance_uid and capabilities are ignored. |
|
custom_capabilities |
Development | Done | Declares custom/extension capabilities supported by the Server. | This is support the ChatOps concept |
custom_message |
Development | Done | An arbitrary custom message sent from the Server to the Agent, scoped to a declared custom capability. | This is support the ChatOps concept |
Connection settings policy note:
ReportsOwnTraces, ReportsOwnMetrics, or ReportsOwnLogs as direct connection-settings management features in this project.In addition to the core server we have several supporting tools. These aren’t specifically identified as part of the OpAMP specification, but are a natural extension of the server features we have built out. But can be used independently.
In the code base, this is often referred to as the consumer.
consumer.processDetectionRegexThe main OpAMP Server, which provides the UI and controls for the deployed client (consumers). Plus, controllable additions like the catalogue manager and config editor.
The config editor and its tools can be used to edit Fluent Bit and Fluentd configuration files.
Fluent Bit Classic to YAML converter (from here) when deployed.The catalog component will look into all the defined locations and retrieve the relevant metadata, so the deployed version can be understood
The broker provides the interoperability layer with social channels and Agents when the LLM usage is allowed
Evaluate extensibility so we could provide structure to support (in priority order):
Validation additional rules:
oath.validate is true, then oauth2.issuer needs to be setExplore the overhead and issues that using the CLI as a universal launcher would create (it would simplify the means to integrate the launching of the Client, Server and Broker with the OS)
Enhance the discovery mechanism so that additional CLI tools can be provided when different components are deployed
Parameterised Docker - where the container as all the components, but the Docker container RUN is driven through the CLI
Enhance the demo feature, particularly to enable us to create a large number of simulator instances.
opamp-dev-cli to be used from opamp-cli