Applies to OML v0.6.x · Status: Stable · Last verified 2026-11-06
The lead serves these metrics on a second listener, and the lake writer serves its own. To turn them on, see Monitor an OML server.
Every name starts with oml_. Counters end in _total in the scrape. Every label value comes from a closed set. No label carries a tenant, a key, a principal, an address or a query.
Histograms use bucket bounds that start at 1 ms and double sixteen times, to 32.768 s. oml_review_wait_seconds starts at one minute and doubles to about 23 days.
Lead (server.metrics_listen)
Requests
Metric
Type
Labels
Counts
oml_handler_panics_total
counter
none
Requests whose handler panicked and were answered 500 system.internal with details.reasonhandler_panic by the panic guard inside the traffic layer; the lead's log carries one handler_panic line per panic with its request id and text, and the worker serves the next request. Every one is a defect; doctor's handlers line warns on any.
oml_http_request_duration_seconds
histogram
route, status
API requests. route is the matched route template or unmatched. Probes answered 200 are not counted.
oml_mcp_call_duration_seconds
histogram
tool, mode, outcome
Calls on /mcp. outcome is result, tool_error or rpc_error. mode is empty for a tool without modes.
oml_idempotency_replays_total
counter
none
Responses that carried Idempotency-Replay: true.
oml_idempotency_conflicts_total
counter
none
Requests refused in the idempotency error family.
oml_oauth_token_requests_total
counter
grant_type, outcome
POST /oauth/token calls by RFC outcome. A rise in invalid_grant on refresh_token means lost refresh answers or stolen tokens.
oml_web_exchanges_failed_total
counter
provider, reason
Failed Google or GitHub sign-in exchanges.
Review and workareas
Metric
Type
Labels
Counts
oml_review_wait_seconds
histogram
verdict
Time from a memory's submission to its verdict. The count by verdict gives the rejection rate.
oml_review_bulk_items_total
counter
outcome
Items in bulk verdicts: approved, rejected or skipped.
oml_recall_unreviewed_hits_total
counter
none
Recall hits labeled unreviewed.
oml_workarea_mode_changes_total
counter
mode
Workarea modes set by a person's key. standard on an in-progress root is its commit.
oml_curation_acts_total
counter
act
Acts by curator keys inside in-progress workareas: reject, retire, flag or write.
oml_source_checks_total
counter
outcome
Source checks recorded: fresh, equivalent, moved, changed or removed.
oml_scan_findings_total
counter
class, rule, action
Scan findings since start. action is veto or hold. Counts only, never a matched value.
Writes
Metric
Type
Labels
Counts
oml_remember_duplicates_total
counter
relation
Writes whose text a served memory in the workarea already holds (same_text) or does not (none).
oml_remember_similar_total
counter
relation, on_similar
Writes the similar check ran for. relation is none, same_text or near_copy. on_similar is hold or refuse.
oml_remember_similar_duration_seconds
histogram
none
Time of the similar check.
Recall
Metric
Type
Labels
Counts
oml_recalls_total
counter
pipeline, fallback, access
Recalls by the search pipeline that ranked them. fallback marks a match=all recall that fell back to any word. access says whether postings or a scan answered.
oml_recall_answers_total
counter
pipeline, result
Recall answers: hits, empty, or below_floor when the relevance floor withheld a row.
oml_recall_duration_seconds
histogram
pipeline
Time the app spent answering a recall.
oml_recall_stage_duration_seconds
histogram
pipeline, stage
Time in each stage: scope, retrieve_<retriever>, fuse, rerank, suggest, hydrate, cut. Only the stages a served pipeline runs have series.
oml_recall_hits_by_origin_total
counter
origin_kind
Recall hits by the origin kind of the version.
oml_reranks_total
counter
outcome, reason
Reranking stages: applied or skipped, with the reason none, busy, timeout or failed.
oml_sparse_encoded_total
counter
outcome
Versions the learned sparse encoder wrote postings for, failed on, or parked as dead letters.
oml_sparse_backlog
gauge
none
Versions waiting for the sparse encoder, across the deployment.
oml_memories_unrecalled
gauge
promoted_for
Served memories no recall in the last 30 days returned, by time since approval (7d, 30d, 90d, older). Refreshed every 10 minutes.
Recall telemetry
Metric
Type
Labels
Counts
oml_recall_outcomes_total
counter
label
What a recall's reader did next: get, derived, superseded, feedback_useful, feedback_not_useful, requery or no_use.
oml_recall_events_total
counter
outcome
Recall events written, or dropped as dropped_queue_full, dropped_store_error or dropped_no_partition. A drop never changes a recall's answer.
oml_recall_labels_dropped_total
counter
reason
Labels not stored: rate_limited, queue_full or store_error.
oml_telemetry_queue_depth
gauge
none
Items waiting for the telemetry writer.
oml_labeller_lag_seconds
gauge
none
Seconds since the labeller's last completed pass.
oml_telemetry_purge_overdue
gauge
none
Tenants holding telemetry rows older than 30 days and a minute.
Lake writer (OML_LAKE_METRICS_ADDR)
The writer listens on 127.0.0.1:9466 by default. See the lake.
Metric
Type
Labels
Counts
oml_lake_frontier_seq
gauge
none
The outbox sequence the lake has applied through.
oml_lake_horizon_seq
gauge
none
The outbox sequence of the stable prefix at the last cut.