OpenTelemetry.OpAmp.Client
0.5.0-alpha.1
Prefix Reserved
dotnet add package OpenTelemetry.OpAmp.Client --version 0.5.0-alpha.1
NuGet\Install-Package OpenTelemetry.OpAmp.Client -Version 0.5.0-alpha.1
<PackageReference Include="OpenTelemetry.OpAmp.Client" Version="0.5.0-alpha.1" />
<PackageVersion Include="OpenTelemetry.OpAmp.Client" Version="0.5.0-alpha.1" />
<PackageReference Include="OpenTelemetry.OpAmp.Client" />
paket add OpenTelemetry.OpAmp.Client --version 0.5.0-alpha.1
#r "nuget: OpenTelemetry.OpAmp.Client, 0.5.0-alpha.1"
#:package OpenTelemetry.OpAmp.Client@0.5.0-alpha.1
#addin nuget:?package=OpenTelemetry.OpAmp.Client&version=0.5.0-alpha.1&prerelease
#tool nuget:?package=OpenTelemetry.OpAmp.Client&version=0.5.0-alpha.1&prerelease
OpAMP Client for OpenTelemetry .NET
| Status | |
|---|---|
| Stability | Development |
| Code Owners | @RassK, @stevejgordon |
Steps to use OpenTelemetry.OpAmp.Client
Step 1: Install Package
Add a reference to the
OpenTelemetry.OpAmp.Client
package.
dotnet add package --prerelease OpenTelemetry.OpAmp.Client
Step 2: Create the OpAMP Client at application startup
using OpenTelemetry.OpAmp.Client;
using OpenTelemetry.OpAmp.Client.Settings;
using var client = new OpAmpClient(opts =>
{
// Set up the OpAMP server connection.
// Supported options are HTTP (polling) and WebSocket connection.
opts.ServerUrl = new Uri("wss://localhost:4320/v1/opamp");
opts.ConnectionType = ConnectionType.WebSocket;
// Add custom resources to help the server identify your client.
opts.Identification.AddIdentifyingAttribute("application.name", "my-application");
opts.Identification.AddNonIdentifyingAttribute("application.version", "1.0.0");
});
// Start the client to send the identification message and get ready to receive messages.
await client.StartAsync();
// The client also supports StopAsync() for proper shutdown and to unregister from the server.
await client.StopAsync();
Supported Features
Transport and Identification
The client supports HTTP polling and WebSocket transport. Configure the transport
with ConnectionType and ServerUrl; use HttpClientFactory or
ClientWebSocketFactory when the underlying client needs custom headers,
handlers, certificates, proxy settings, or other transport-specific options.
Each client instance has an InstanceUid and may report identifying and
non-identifying resource attributes through Identification. Attribute values
may be strings, integers, doubles, booleans, or collections of those types.
Message Subscriptions
Server-to-agent messages are delivered to typed IOpAmpListener<TMessage>
instances registered with Subscribe<T>(). Use Unsubscribe<T>() when a
listener should no longer receive messages.
Public server message types include ServerCapabilitiesMessage, FlagsMessage,
RemoteConfigMessage, CustomCapabilitiesMessage, and CustomMessageMessage.
Remote Configuration
Enable RemoteConfiguration.AcceptsRemoteConfig to advertise that the client
can receive remote configuration from the OpAMP server. Remote configuration is
delivered as a RemoteConfigMessage, which contains the configuration hash and
an AgentConfigMap of named AgentConfigFile values.
Enable RemoteConfiguration.ReportsRemoteConfigStatus to report configuration
processing status back to the server. Use SendRemoteConfigStatusAsync() with a
RemoteConfigStatusReport to report Applying, Applied, or Failed for the
last received configuration hash.
Effective Configuration Reports
Enable EffectiveConfigurationReporting.EnableReporting when the client should
report its current effective configuration to the server. Use
SendEffectiveConfigAsync() with one or more EffectiveConfigFile values.
EffectiveConfigFile can be created from in-memory content or from a bounded
stream using CreateFromStream() or CreateFromStreamAsync().
Custom Capabilities and Messages
Use SendCustomCapabilitiesAsync() to advertise custom capability names
supported by the client. Use SendCustomMessageAsync() to send a typed payload
for one of those capabilities.
Server-provided custom capabilities and custom messages are exposed through
CustomCapabilitiesMessage and CustomMessageMessage subscriptions.
Heartbeat and Shutdown
Heartbeat reporting is enabled by default. Configure it with
Heartbeat.IsEnabled and Heartbeat.Interval.
Call StopAsync() before disposal when the client should unregister cleanly
from the server. Dispose() performs synchronous, best-effort cleanup of
services and transport resources, but it does not send the agent disconnect
message.
Security Considerations
Effective Configuration Reporting
When effective configuration reporting is enabled, file contents are read in full and transmitted verbatim to the OpAMP server. There is no automatic redaction.
- Use TLS: Configure
ServerUrlwith awss://orhttps://scheme so that configuration data is encrypted in transit. - Avoid sensitive files: Do not report files that contain secrets such as passwords, API tokens, or private keys unless you fully trust the OpAMP server and the network path to it.
References
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.6.2
- Google.Protobuf (>= 3.31.1)
-
.NETStandard 2.0
- Google.Protobuf (>= 3.31.1)
-
net10.0
- Google.Protobuf (>= 3.31.1)
-
net8.0
- Google.Protobuf (>= 3.31.1)
-
net9.0
- Google.Protobuf (>= 3.31.1)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on OpenTelemetry.OpAmp.Client:
| Package | Downloads |
|---|---|
|
OpenTelemetry.AutoInstrumentation.Runtime.Managed
Managed components used by the OpenTelemetry.AutoInstrumentation project. |
|
|
Elastic.OpenTelemetry
OpenTelemetry extensions for Elastic Observability. |
|
|
Elastic.OpenTelemetry.AutoInstrumentation
OpenTelemetry extensions for Elastic Observability. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 0.5.0-alpha.1 | 33 | 7/1/2026 | |
| 0.4.0-alpha.1 | 8,253 | 5/22/2026 | |
| 0.3.0-alpha.1 | 5,829 | 4/28/2026 | |
| 0.2.0-alpha.1 | 24,555 | 4/21/2026 | |
| 0.1.0-alpha.4 | 984 | 1/14/2026 | |
| 0.1.0-alpha.3 | 328 | 11/13/2025 | |
| 0.1.0-alpha.2 | 218 | 11/3/2025 | |
| 0.1.0-alpha.1 | 512 | 9/23/2025 |