mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-30 19:09:28 +00:00
Salvages the event-spine foundation from feat/telemetry-observability (emitter, typed events, OTLP streaming, redaction — authorship preserved in the preceding commits) and scopes it to the plane enterprise operators need today: gateway Service Health Monitoring plus redacted Operational Diagnostics, exported over OTLP. Dropped from the salvaged branch, deliberately: - run/model/tool trajectory capture (plugins/telemetry hooks, tel_spans) - the local JSONL + state.db tel_* store (monitoring is egress, not storage) - usage rollups/metrics, /insights integration, bulk export - hermes telemetry CLI (replaced by hermes monitoring status) Those planes — shared client usage metrics and enterprise trace telemetry — are being designed on the NeMo Relay integration with distinct consent, policy, and export boundaries; this keeps the monitoring plane content-free and independently enableable. Renames agent/telemetry -> agent/monitoring, config telemetry.* -> monitoring.*, and pins the otlp extra at OpenTelemetry 1.39.1 (matching uv.lock; 1.30.0 conflicts with mistralai>=2.4 on opentelemetry-api).
29 lines
956 B
Python
29 lines
956 B
Python
"""Hermes gateway monitoring.
|
|
|
|
Service health monitoring plus redacted operational diagnostics for the
|
|
gateway daemon, exported over OTLP to an operator-configured endpoint.
|
|
|
|
``emitter`` is the in-process event bus: producers (gateway status hooks,
|
|
the diagnostic log handler) hand typed events to a fire-and-forget queue,
|
|
and subscribers (the OTLP streamers) consume them off the hot path. The
|
|
emitter never blocks or raises into gateway code (the hot-path invariant),
|
|
and nothing is persisted locally — monitoring is an egress path, not a store.
|
|
|
|
Deliberately out of scope here: run/model/tool trajectory capture, usage
|
|
analytics, and any content-bearing signal. Those planes are served by the
|
|
NeMo Relay integration and its Hermes-owned subscribers.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from . import emitter, events
|
|
|
|
emit = emitter.emit
|
|
get_emitter = emitter.get_emitter
|
|
|
|
__all__ = [
|
|
"emitter",
|
|
"events",
|
|
"emit",
|
|
"get_emitter",
|
|
]
|