Extended Prometheus metrics
Composer exposes roughly 160 metrics on its Prometheus endpoint (default port 8015, path /metrics). The tables below are the canonical reference, generated from the metric definitions in the engine; the Description column reproduces the # HELP text served alongside each metric on the endpoint. From R2 2026 every metric is emitted by every Composer build and licence tier (including Trial) with no separate activation.
Caution
Pre-R2 2026 releases: On older releases the extended metrics still appeared on the endpoint but reported 0 and didn't update unless the host's licence carried the Extended Monitoring plug-in entry (Trial builds were the exception and always exposed them). The baseline metrics (see below) have always reported normally regardless of licence.
Naming and prefixes
Metric names are a wire contract — Grafana dashboards and alert rules query them by name, so they are stable across releases. Composer uses five name prefixes:
| Prefix | Group | Notes |
|---|---|---|
composer_ |
Baseline | Core render-loop and log counters. Always emitted on every tier. |
composer_ext_ |
Extended | The bulk of the surface — GPU, RTMP/SRT, alarms, WebSockets, etc. The _ext_ prefix is historical; it is not a reliable marker of which group a metric belongs to. |
composer_packager_sink_target_ |
MoQ / Packager target | Per-target media-over-QUIC output metrics. |
composer_moq_input_ |
MoQ / Packager source | Per-source media-over-QUIC input metrics. |
composer_runtime_ |
Runtime lifecycle | Process- and session-level metrics for the headless Composer Runtime. |
Every metric additionally carries the static labels systemlabel, version, and hostname, applied at startup so a single Prometheus/Grafana instance can disambiguate many Composer hosts. Counters (cumulative since process start) are marked Counter below; everything else is a Gauge (an instantaneous value, even where the name ends in _total or _count).
Baseline metrics
Always emitted, on every licence tier. These drive the core render-health panels and the per-severity log counters.
| Metric | Type | Description |
|---|---|---|
composer_frames_processed_total |
Gauge | Total processed video frames since process start. |
composer_skipped_frames_total |
Gauge | Total frames skipped because compute time was too high, since process start. A rising value is the per-instance "dropping work" signal for autoscaling. |
composer_congestions_last_second |
Gauge | Congestive frames in the last second. |
composer_congestive_frames_since_start |
Gauge | Total congestive frames since process start. |
composer_processing_queue_length |
Gauge | Current render processing queue length. |
composer_last_frame_processing_time |
Gauge | Processing time of the most recent frame in ms. |
composer_max_processing_time |
Gauge | Maximum frame processing time observed in ms. |
composer_average_processing_time |
Gauge | Average frame processing time in ms. |
composer_gpu_ram_usage |
Gauge | GPU RAM used by the process in GB. |
composer_fatal_error_count_total |
Counter | Total fatal errors logged since process start. |
composer_error_count_total |
Counter | Total errors logged since process start. |
composer_warning_count_total |
Counter | Total warnings logged since process start. |
composer_build_info |
Gauge | Constant 1 carrying version, hostname and os labels. Join against it in queries to attach build metadata to other series. |
Processing
Extended render-loop timing beyond the baseline frame counters.
| Metric | Type | Description |
|---|---|---|
composer_ext_average_processing_time_10k_frames |
Gauge | Average frame processing time over the last 10k frames in ms. |
composer_ext_average_processing_usage_10k_frames |
Gauge | Average processing-budget usage over the last 10k frames in percent. |
composer_ext_last_frame_processing_usage |
Gauge | Processing-budget usage of the most recent frame in percent. |
composer_ext_worker_queue_flushes |
Gauge | Worker queue flushes since process start. |
GPU
Sampled from nvidia-smi. All values are for the GPU Composer is bound to.
| Metric | Type | Description |
|---|---|---|
composer_ext_gpu_power_usage_percentage |
Gauge | GPU power draw as a percentage of the power limit. |
composer_ext_gpu_power_usage |
Gauge | GPU power draw in watts. |
composer_ext_gpu_power_limit |
Gauge | GPU power limit in watts. |
composer_ext_gpu_power_state |
Gauge | GPU performance state (P-state) reported by nvidia-smi, as an integer. |
composer_ext_gpu_power_management_enabled |
Gauge | 1 if GPU power management is enabled, 0 otherwise. |
composer_ext_gpu_utilization |
Gauge | GPU core utilisation percentage. |
composer_ext_gpu_encoder_utilization |
Gauge | GPU hardware encoder utilisation percentage. |
composer_ext_gpu_decoder_utilization |
Gauge | GPU hardware decoder utilisation percentage. |
composer_ext_gpu_memory_total |
Gauge | Total GPU memory in GB. |
composer_ext_gpu_memory_used |
Gauge | Used GPU memory in GB. |
composer_ext_gpu_memory_available |
Gauge | Available GPU memory in GB. |
composer_ext_gpu_temperature |
Gauge | GPU temperature in degrees Celsius. |
System memory
Process RAM (not host-wide memory), in GB.
| Metric | Type | Description |
|---|---|---|
composer_ext_system_memory_usage |
Gauge | Process RAM usage in GB. |
composer_ext_system_memory_usage_avg_10min |
Gauge | Average process RAM usage over the last 10 minutes in GB. |
composer_ext_system_memory_usage_max_10min |
Gauge | Peak process RAM usage over the last 10 minutes in GB. |
composer_ext_system_memory_usage_min_10min |
Gauge | Minimum process RAM usage over the last 10 minutes in GB. |
RTMP targets (aggregate)
Roll-ups across all RTMP targets in the project. For per-target detail, see Per-instance metrics below.
| Metric | Type | Description |
|---|---|---|
composer_ext_rtmp_target_count |
Gauge | Number of RTMP target instances. |
composer_ext_rtmp_target_nvenc_count |
Gauge | Number of RTMP targets using the NVENC encoder. |
composer_ext_rtmp_target_x264_count |
Gauge | Number of RTMP targets using the x264 software encoder. |
composer_ext_rtmp_target_connected_count |
Gauge | Number of RTMP targets currently connected. |
composer_ext_rtmp_target_disconnected_count |
Gauge | Number of RTMP targets currently disconnected. |
composer_ext_rtmp_target_connecting_count |
Gauge | Number of RTMP targets currently connecting. |
composer_ext_rtmp_target_disconnecting_count |
Gauge | Number of RTMP targets currently disconnecting. |
composer_ext_rtmp_target_reconnecting_count |
Gauge | Number of RTMP targets currently reconnecting. |
composer_ext_rtmp_target_errors |
Gauge | Number of RTMP targets currently in an error state. |
composer_ext_rtmp_target_warnings |
Gauge | Number of RTMP targets currently in a warning state. |
composer_ext_rtmp_target_error_count |
Counter | Total RTMP target errors since process start. |
composer_ext_rtmp_target_warning_count |
Counter | Total RTMP target warnings since process start. |
composer_ext_rtmp_target_auto_reconnect_count |
Gauge | Total automatic RTMP target reconnections. |
composer_ext_rtmp_target_sum_outgoing_bitrate |
Gauge | Combined outgoing bitrate across all RTMP targets in Mbit/s. |
composer_ext_rtmp_target_avg_network_write_time |
Gauge | Average network write time across RTMP targets in ms. |
composer_ext_rtmp_target_avg_video_encode_time |
Gauge | Average video encode time across RTMP targets in ms. |
composer_ext_rtmp_target_all_connected |
Gauge | 1 if all RTMP targets are connected, 0 otherwise. |
composer_ext_rtmp_target_max_pts_diff |
Gauge | Maximum PTS difference across RTMP targets in ms. |
Per-instance metrics
One time series per input/target instance, identified by the labels instance_id and instance_name. While the project is running, an input or target that is deleted or renamed loses its series within one metrics update (every 4 seconds), and loading or closing a project removes all of them, so the endpoint never reports a component the project no longer has. A stopped input or target is still part of the project and keeps its series, which report its stopped state. connection_status is encoded as 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting; buffer_state / buffering_state as 0=None, 1=Buffering, 2=Buffered; listener and playback states are raw integer enum values.
Expected state (per instance_id, instance_name)
Every target reports these, whatever its type, and so does every input that can be started or stopped. The inputs that cannot are left out entirely — no expected state, no series. Those are scenes, the ones Composer simply draws (still image, rectangle, text), the control surfaces that act on other components (switcher, batch processor, interactive button) and the internal audio buses (audio channel strip and the generated channel splits). Nothing commands any of them, so the reading could only ever be Unknown, and Unknown is a real answer everywhere else: nobody has commanded this component yet. The targets inside a scene are started and stopped like any others and each get their own series. Expected state is what a component was last asked to be, as against the connection and playback states below, which report what it actually is. A component set to start with the project counts as asked, and reads Running from the moment the project starts it. One set to autostart that the project could not start at all — an input with no source selected, a media player with no file — stays Unknown rather than reading as a permanent fault. Stopping the project returns every component to Unknown.
The pair is what makes an outage alertable: expected Running on a component that is not connected is a fault, while expected Stopped or Unknown on the same component is ordinary operation. Neither reading says that on its own.
| Metric | Type | Description |
|---|---|---|
composer_ext_input_expected_state |
Gauge | Expected state: 0=Unknown, 1=Running, 2=Stopped. |
composer_ext_target_expected_state |
Gauge | Expected state: 0=Unknown, 1=Running, 2=Stopped. |
RTMP target (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_rtmp_target_instance_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_ext_rtmp_target_instance_outgoing_bitrate_mbps |
Gauge | Outgoing bitrate in Mbit/s. |
composer_ext_rtmp_target_instance_output_queue_size |
Gauge | Output queue depth. |
composer_ext_rtmp_target_instance_avg_video_encode_time_ms |
Gauge | Average video encode time in ms. |
composer_ext_rtmp_target_instance_max_video_encode_time_ms |
Gauge | Maximum video encode time in ms. |
composer_ext_rtmp_target_instance_avg_network_write_time_ms |
Gauge | Average network write time in ms. |
composer_ext_rtmp_target_instance_pts_diff_average |
Gauge | Average PTS difference in ms. |
composer_ext_rtmp_target_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_rtmp_target_instance_video_frames_written |
Gauge | Video frames written. |
composer_ext_rtmp_target_instance_error_count |
Gauge | Error count for this target. |
composer_ext_rtmp_target_instance_warning_count |
Gauge | Warning count for this target. |
SRT target (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_srt_target_instance_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_ext_srt_target_instance_outgoing_bitrate_mbps |
Gauge | Outgoing bitrate in Mbit/s. |
composer_ext_srt_target_instance_output_queue_size |
Gauge | Output queue depth. |
composer_ext_srt_target_instance_avg_video_encode_time_ms |
Gauge | Average video encode time in ms. |
composer_ext_srt_target_instance_max_video_encode_time_ms |
Gauge | Maximum video encode time in ms. |
composer_ext_srt_target_instance_avg_network_write_time_ms |
Gauge | Average network write time in ms. |
composer_ext_srt_target_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_srt_target_instance_video_frames_written |
Gauge | Video frames written. |
composer_ext_srt_target_instance_error_count |
Gauge | Error count for this target. |
composer_ext_srt_target_instance_warning_count |
Gauge | Warning count for this target. |
RTMP input (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_rtmp_input_instance_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_ext_rtmp_input_instance_video_buffer_size_frames |
Gauge | Video buffer depth in frames. |
composer_ext_rtmp_input_instance_video_buffer_size_ms |
Gauge | Video buffer depth in ms. |
composer_ext_rtmp_input_instance_audio_buffer_size_ms |
Gauge | Audio buffer depth in ms. |
composer_ext_rtmp_input_instance_buffer_state |
Gauge | Buffer state: 0=None, 1=Buffering, 2=Buffered. |
composer_ext_rtmp_input_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_rtmp_input_instance_flushes |
Gauge | Buffer flushes performed. |
SRT input (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_srt_input_instance_listener_status |
Gauge | Listener status as an integer enum value. |
composer_ext_srt_input_instance_buffering_state |
Gauge | Buffering state: 0=None, 1=Buffering, 2=Buffered. |
composer_ext_srt_input_instance_video_buffer_size_frames |
Gauge | Video buffer depth in frames. |
composer_ext_srt_input_instance_video_buffer_size_ms |
Gauge | Video buffer depth in ms. |
composer_ext_srt_input_instance_audio_buffer_size_ms |
Gauge | Audio buffer depth in ms. |
composer_ext_srt_input_instance_video_audio_sync_ms |
Gauge | Video/audio sync offset in ms. |
composer_ext_srt_input_instance_auto_reconnects |
Gauge | Automatic reconnections performed. |
composer_ext_srt_input_instance_flushes |
Gauge | Buffer flushes performed. |
composer_ext_srt_input_instance_buffer_underruns |
Gauge | Buffer under-runs. |
composer_ext_srt_input_instance_video_decode_errors |
Gauge | Video decode errors. |
composer_ext_srt_input_instance_packets_received |
Gauge | Packets received. |
composer_ext_srt_input_instance_rendered_frames |
Gauge | Rendered frames. |
DeckLink input (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_decklink_input_instance_playback_state |
Gauge | Playback state as an integer enum value. |
composer_ext_decklink_input_instance_captured_frames |
Gauge | Captured frames. |
composer_ext_decklink_input_instance_playback_frames |
Gauge | Playback frames. |
composer_ext_decklink_input_instance_zero_data_frames |
Gauge | Zero-data frames captured. |
NDI input (per instance_id, instance_name)
An NDI source runs on its own clock, so its frames never arrive at exactly the project rate. The input holds a few frames in reserve to absorb the difference and repeats or drops one when the reserve drifts off target. These metrics show whether that is working and, when it is not, whether the cause is the source's rate or the network's evenness.
| Metric | Type | Description |
|---|---|---|
composer_ext_ndi_input_instance_playback_state |
Gauge | Playback state as an integer enum value. |
composer_ext_ndi_input_instance_video_queue_size_frames |
Gauge | Frames currently buffered ahead of playout. Should sit at the buffer target. |
composer_ext_ndi_input_instance_buffer_target_frames |
Gauge | Configured buffer target in frames (NdiBufferFrames). 0 means buffering is disabled. |
composer_ext_ndi_input_instance_audio_queue_size_ms |
Gauge | Audio buffered ahead of playout, in ms. |
composer_ext_ndi_input_instance_drift_corrections |
Gauge | Frames repeated or dropped to hold the buffer on target since the receiver started. |
composer_ext_ndi_input_instance_measured_fps |
Gauge | Frame rate measured from actual arrivals, not the rate the source declares. 0 until enough frames have arrived. |
composer_ext_ndi_input_instance_rate_deviation_ppm |
Gauge | Measured arrival rate versus the project frame rate, in parts per million. |
composer_ext_ndi_input_instance_arrival_jitter_ms |
Gauge | Smoothed unevenness of frame arrivals, in ms. |
composer_ext_ndi_input_instance_recycle_drops |
Gauge | Frames dropped at the receiver because its queue approached the frame-ring size. Should be 0. |
composer_ext_ndi_input_instance_sdk_dropped_video_frames |
Gauge | Video frames dropped inside the NDI SDK before reaching Composer. |
composer_ext_ndi_input_instance_sdk_video_queue_depth |
Gauge | Video frames queued inside the NDI SDK receiver. |
Reading them together:
drift_correctionsclimbing slowly withrate_deviation_ppmwithin a few ppm is normal — that is two machines' clocks drifting apart, and one corrected frame every few minutes is the expected cost.rate_deviation_ppmnear ±1000 means the source is mislabelled: it declares one NTSC rate and sends the other (30.000 versus 29.97). Expect a corrected frame roughly every 33 seconds. Fix the sending device; no amount of buffering removes it.- High
arrival_jitter_mswithrate_deviation_ppmnear zero is a network problem, not a rate problem. Raisingbuffer_target_framesabsorbs it at the cost of latency. sdk_dropped_video_framesrising means frames are lost before Composer ever sees them — look upstream at the sender or the network, not at the buffer.recycle_dropsabove zero means Composer's own pipeline stalled long enough to discard incoming frames; check overall compute time rather than the NDI source.
DeckLink output (per instance_id, instance_name)
| Metric | Type | Description |
|---|---|---|
composer_ext_decklink_output_instance_playback_state |
Gauge | Playback state as an integer enum value. |
composer_ext_decklink_output_instance_frames_displayed |
Gauge | Frames displayed. |
MoQ / Packager targets
Per media-over-QUIC output (MoQTarget / packager sink), labelled target_id, target_name, and sink_type. composer_packager_sink_target_count is the only unlabelled roll-up.
| Metric | Type | Description |
|---|---|---|
composer_packager_sink_target_count |
Gauge | Number of MoQTarget/PackagerSink instances. |
composer_packager_sink_target_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_packager_sink_target_reconnection_count_total |
Counter | Total reconnections for this target since process start. |
composer_packager_sink_target_frames_processed_total |
Counter | Total frames processed by this target since process start. |
composer_packager_sink_target_packets_sent_total |
Counter | Total packets sent by this target since process start. |
composer_packager_sink_target_avg_video_processing_time |
Gauge | Average video processing time in ms. |
composer_packager_sink_target_avg_encoding_time |
Gauge | Average encoding time in ms. |
composer_packager_sink_target_avg_total_time |
Gauge | Average total processing time in ms. |
composer_packager_sink_target_peak_video_processing_time |
Gauge | Peak video processing time in ms. |
composer_packager_sink_target_peak_encoding_time |
Gauge | Peak encoding time in ms. |
composer_packager_sink_target_video_input_queue_depth |
Gauge | Video input queue depth. |
composer_packager_sink_target_encoding_input_queue_depth |
Gauge | Encoding input queue depth. |
composer_packager_sink_target_output_queue_depth |
Gauge | Output queue depth. |
composer_packager_sink_target_outgoing_bitrate_mbps |
Gauge | Outgoing bitrate in Mbit/s (30-second rolling average). |
MoQ / Packager sources
Per media-over-QUIC input (MoQInput / packager source), labelled id, name, and source_type. composer_moq_input_count is the only unlabelled roll-up.
| Metric | Type | Description |
|---|---|---|
composer_moq_input_count |
Gauge | Number of MoQInput instances. |
composer_moq_input_connection_status |
Gauge | Connection status: 0=Disconnected, 1=Connecting, 2=Connected, 3=Reconnecting. |
composer_moq_input_reconnection_count_total |
Counter | Total reconnections for this source since process start. |
composer_moq_input_packets_received_total |
Counter | Total packets received by this source since process start. |
composer_moq_input_rendered_frames_total |
Counter | Total frames rendered by this source since process start. |
composer_moq_input_video_frames_decoded_total |
Counter | Total video frames decoded by this source since process start. |
composer_moq_input_audio_frames_decoded_total |
Counter | Total audio frames decoded by this source since process start. |
composer_moq_input_buffer_underruns_total |
Counter | Total buffer under-runs for this source since process start. |
composer_moq_input_video_decode_errors_total |
Counter | Total video decode errors for this source since process start. |
composer_moq_input_video_buffer_ms |
Gauge | Video buffer size in ms. |
composer_moq_input_audio_buffer_ms |
Gauge | Audio buffer size in ms. |
composer_moq_input_incoming_video_bitrate_mbps |
Gauge | Incoming video bitrate in Mbit/s. |
composer_moq_input_incoming_audio_bitrate_mbps |
Gauge | Incoming audio bitrate in Mbit/s. |
composer_moq_input_avg_decode_time_ms |
Gauge | Average video decode time in ms. |
composer_moq_input_peak_decode_time_ms |
Gauge | Peak video decode time in ms. |
composer_moq_input_connect_latency_ms |
Gauge | Last connect latency in ms. |
composer_moq_input_is_congested |
Gauge | 1 if the source is congested, 0 otherwise. |
composer_moq_input_video_audio_sync_ms |
Gauge | Video/audio sync offset in ms. |
Alarms
| Metric | Type | Description |
|---|---|---|
composer_ext_alarms_total_count |
Counter | Total alarms triggered since process start. |
composer_ext_alarms_currently_active |
Gauge | Number of alarms currently active. |
WebSockets
Real-time API traffic — connected clients, throughput, and queue depths.
| Metric | Type | Description |
|---|---|---|
composer_ext_incoming_websocket_messages_total |
Counter | Total WebSocket messages received since process start. |
composer_ext_sent_websocket_messages_total |
Counter | Total WebSocket messages sent since process start. |
composer_ext_websockets_incoming_queue_size |
Gauge | Current inbound WebSocket queue size. |
composer_ext_websockets_outgoing_queue_size |
Gauge | Current outbound WebSocket queue size. |
composer_ext_websocket_processing_time_ms |
Gauge | WebSocket processing time in ms. |
composer_ext_websocket_incoming_message_count_total |
Gauge | Cumulative inbound WebSocket message count. |
composer_ext_websocket_outgoing_message_count_total |
Gauge | Cumulative outbound WebSocket message count. |
composer_ext_websocket_clients_connected |
Gauge | Number of currently connected WebSocket clients. |
composer_ext_websocket_egress_bytes_per_second_average |
Gauge | Average outbound WebSocket throughput in bytes per second. |
composer_ext_websocket_ingress_bytes_per_second_average |
Gauge | Average inbound WebSocket throughput in bytes per second. |
composer_ext_websocket_egress_messages_per_second |
Gauge | Outbound WebSocket messages per second. |
composer_ext_websocket_egress_bytes_per_second |
Gauge | Outbound WebSocket throughput in bytes per second. |
Runtime lifecycle
Process- and session-level metrics for the headless Composer Runtime. composer_runtime_api_calls_total carries an endpoint label.
| Metric | Type | Description |
|---|---|---|
composer_runtime_uptime_seconds |
Gauge | Runtime process uptime in seconds. |
composer_runtime_project_uptime_seconds |
Gauge | Current project session uptime in seconds. |
composer_runtime_project_loaded |
Gauge | 1 if a project is loaded and running, 0 otherwise. |
composer_runtime_projects_started_total |
Counter | Total projects started since runtime launch. |
composer_runtime_reloads_total |
Counter | Total project reloads since runtime launch. |
composer_runtime_api_calls_total |
Counter | Total runtime API calls since runtime launch. (label: endpoint) |
composer_runtime_errors_total |
Gauge | Cumulative errors across all project sessions since runtime launch. |
composer_runtime_warnings_total |
Gauge | Cumulative warnings across all project sessions since runtime launch. |
composer_runtime_last_reload_duration_seconds |
Gauge | Duration of the last project reload in seconds. |
composer_runtime_last_time_to_first_frame_seconds |
Gauge | Time from the last start/reload to the first frame rendered, in seconds. |
composer_runtime_compute_time_ms_short |
Gauge | Average compute time over the last ~100 frames in ms. |
composer_runtime_compute_time_ms_long |
Gauge | Average compute time over the last ~10k frames in ms. |
composer_runtime_congestions |
Gauge | Congestive frames in the current project session. |
composer_runtime_queue_flushes |
Gauge | Worker queue flushes in the current project session. |
composer_runtime_ready |
Gauge | 1 when the runtime is ready (startup complete and state Idle or Running), 0 otherwise. Mirrors the /ready health probe. |
composer_runtime_live |
Gauge | 1 when the main loop is live (ticked within the liveness window), 0 otherwise. Mirrors the /health health probe. |
Project and API
| Metric | Type | Description |
|---|---|---|
composer_ext_project_fps |
Gauge | Configured project frame rate in frames per second. |
composer_ext_api_call_count |
Counter | Total HTTP API calls since process start. |
composer_ext_allow_grafana_alerts |
Gauge | 1 if Grafana alerts are enabled for this instance, 0 otherwise. |
composer_ext_runtime_state_enum |
Gauge | Runtime lifecycle state exposed as an integer enum value. |
The /metrics endpoint is self-describing: each metric carries its own # HELP and # TYPE lines. The tables above are kept in sync with the engine's metric definitions, but pointing a browser at a running instance's /metrics endpoint always shows the exact set emitted by that specific build.