Skip to content

OpAMP capability matrix

OpAMP defines a capability bitfield each agent advertises. Ampora gates every server-to-agent push on the matching capability — no capability, no push. This page is the canonical "what Ampora does with each flag".

Server-honoured capabilities

Capability Bit What Ampora does Notes
AcceptsRemoteConfig 0x01 Pushes assigned configs as RemoteConfig frames Required for any rollout
ReportsEffectiveConfig 0x02 Persists EffectiveConfig; computes drift Required for drift detection
ReportsRemoteConfigStatus 0x04 Tracks APPLYING/APPLIED/FAILED; powers gates Required for apply-failed-ratio gate
ReportsHealth 0x08 Persists per-component health; powers unhealthy-ratio gate Recommended
AcceptsPackages 0x10 Sends PackagesAvailable for binary updates Off by default in our recommended templates
ReportsPackageStatuses 0x20 Persists per-package version + state on agent detail Pairs with AcceptsPackages
AcceptsConnectionSettings 0x40 Pushes new mTLS leaves on auto-renewal; supports handover Required for hot cert rotation
AcceptsOtherConnectionSettings 0x80 Reserved; not used by Ampora server Forwarded as-is if needed
ReportsOwnTraces 0x100 Forwards self-traces to the configured OTLP endpoint Optional; useful for debugging agents
ReportsOwnMetrics 0x200 Powers the Live metrics view
ReportsOwnLogs 0x400 Forwards self-logs to configured OTLP endpoint
AcceptsOpAmpConnectionSettings 0x800 Required for federation cross-cluster handover
ReportsAvailableComponents 0x1000 Persists the agent's component catalogue; lints against it Lets Ampora warn "agent X does not have processor Y"

Agent advertises but Ampora ignores

None today. Every flag listed above is honoured if the agent advertises it.

OpAmp:AllowedCapabilityFlags

The setting OpAmp:AllowedCapabilityFlags is a server-side bitmask that narrows what the server will use even if the agent advertises it. Default 15 = AcceptsRemoteConfig | ReportsEffectiveConfig | ReportsRemoteConfigStatus | ReportsHealth.

Set this to a wider bitmask to enable package distribution, hot cert rotation, etc. The narrowing is for safety — a deployment that does not want to push binaries can hard-block the capability at the server.

Example:

OpAmp:
  AllowedCapabilityFlags: 0xFF        # everything in the first byte

What capability matrix means in practice

If an agent does not advertise a capability:

  • The relevant UI button is disabled with a "agent has not advertised this capability" tooltip.
  • The relevant audit event records "skipped due to capability".
  • Ampora never pushes the corresponding frame regardless of operator intent.

This is the mechanism that keeps the Threat model honest — if the agent does not consent, the server cannot push.

Inspecting capabilities

The agent's detail page shows the decoded bitfield. The audit log records the bitfield as a hex value on every reconnect.

In psql:

SELECT instance_uid, capabilities, advertised_at_utc
FROM agents
WHERE instance_uid = '...';

The capabilities column is the integer bitfield; XOR / AND it with the constants above.