OpAMP Gateway
The OpAMP Gateway Extension is a relay between downstream OpAMP-supported OpenTelemetry Collectors and an upstream OpAMP server like Bindplane. It is not a separate binary — it runs inside a collector process deployed at the network boundary.
How the Gateway Works
The opampgateway keeps a fixed pool of upstream WebSockets (default 3) and assigns each new collector to the connection with the fewest collectors, so the server sees only a small number of upstream links no matter how many collectors connect.
It relays OpAMP messages without changing them—collector-to-server traffic goes out on the gateway's upstream connection, and server-to-collector replies are routed back using an internal mapping—so collectors and server behave as if the connection topology were direct.
Authentication is not implemented in the gateway. When a collector connects to the gateway, it accepts the session and authenticates with Bindplane.
Prerequisites
BDOT Collector v1.95.0 or greater on any collector that will run the gateway extension
Network access:
The gateway must have outbound access to the OpAMP server
Collectors must have outbound access to the gateway
A created Configuration in Bindplane to roll out to the gateway
Step 1: Create an OpAMP Extension in Bindplane
Create a configuration and click the bottom right ⚙️ to open the extensions.

Choose the OpAMP Gateway.

Configure it to point to Bindplane's OpAMP endpoint. Enable TLS and set the downstream listener to localhost and port 4320.

This will configure an extension in your BDOT collector's config.yaml file:
You do not need to manually configure anything since Bindplane will remotely push down this config when you roll it out to the gateway collector.
Step 2: Configure Downstream Collectors
Point each collector collector's OpAMP connection at the gateway instead of the upstream server. Only the endpoint changes — capabilities and all other settings remain identical.
You'll do this using the manager.yaml:
The only line that needs to be updated is the endpoint, point to the OpAMP Gateway instead of Bindplane directly.
Step 3: Verify Connectivity
Check gateway collector logs for successful upstream WebSocket connections.
Verify collectors appear in your OpAMP server's fleet view (e.g. Bindplane Collectors UI).
Roll out the configuration from Bindplane and confirm it is applied to the gateway.

manager.yaml Reference
The manager.yaml file defines the BDOT collector's OpAMP connection — separate from config.yaml, which defines the telemetry pipeline. When Bindplane rolls out a pipeline config to a collector, config.yaml is remotely updated; manager.yaml stays stable.
Default file locations:
Linux:
/opt/observiq-otel-collector/manager.yamlWindows:
C:\Program Files\observIQ OpenTelemetry Collector\manager.yamlDocker: path set by the
MANAGER_YAML_PATHenvironment variable
endpoint
Yes
WebSocket URL of the OpAMP server or gateway (ws:// or wss://)
secret_key
Yes
Shared secret for authenticating with the OpAMP server
agent_id
No
Stable unique identifier (ULID or UUID). Auto-generated on first connection. Do not change — the server uses it to recognize the collector across restarts
labels
No
key=value pairs for grouping and targeting in Bindplane
agent_name
No
Human-readable name shown in the Bindplane UI
measurements_interval
No
How often the collector reports throughput metrics upstream
topology_interval
No
How often the collector reports topology information upstream
extra_measurements_attributes
No
Additional key-value attributes attached to measurement data
tls_config.ca_file
No
Custom CA certificate path (for self-signed server certs)
tls_config.insecure_skip_verify
No
Skip TLS verification — for testing only
tls_config.cert_file / key_file
No
Client certificate and key for mTLS
Annotated example:
Key things to know:
Only
endpointis required. If neithermanager.yamlnorOPAMP_ENDPOINTenv var is present, the collector starts in standalone mode with no OpAMP connection.In Docker,
manager.yamlis auto-generated at theMANAGER_YAML_PATHlocation from environment variables. You don't need to create it manually.When spinning up fresh Docker containers, clear any existing
manager.yamlin the storage volume to avoid the collector reconnecting with a stale identity.The telemetry pipeline (
config.yaml) is pushed remotely from Bindplane after the collector connects — you do not need a local pipeline config for managed collectors.
Further Reading
Last updated
Was this helpful?