Console & fleet

OpenTelemetry export (Enterprise)

An Enterprise fleet can forward its detection stream to the monitoring you already run: one OpenTelemetry (OTLP) event per evaluated change, streamed daemon to your own collector. It stays inside your network and never touches the PoisonZero cloud. This page lists what is exported, where it goes, and how it is configured.

~7 min read · Console & fleet

What it is

An owner-scoped OpenTelemetry export that forwards every detection event to a collector or SIEM you run:

  • Standard OTLP: no proprietary agent and no bespoke integration; any OpenTelemetry-compatible collector or backend works.
  • Fixed attribute names under a poisonzero.* namespace, plus mirrored security_rule.* attributes, so dashboards and alerts stay stable as the model or fleet changes.
  • Enterprise feature, available in Cloud mode and Private mode alike.
  • Fail-soft: if the collector is unreachable, export retries in the background; detection and enforcement are never blocked.
By default no content leaves the daemon: events carry verdict, threat level, decision and model version. A content excerpt is attached only at the highest threat band and only if you raise the detail level locally (see below).

What is exported

One event (poisonzero.detection) is emitted per evaluated change. This is the complete attribute set, with the OTLP key, what it carries, and when it is populated:

AttributeDescriptionWhen populated
poisonzero.verdict.labelThe detection verdict label, benign or maliciousAlways
poisonzero.verdict.dangerThe graded danger value in the range 0 to 1Always
poisonzero.verdict.categoryThe attack category: direct-injection, exfiltration, meta-attack, role-play, subtle or benignWhen a category is set
poisonzero.verdict.danger_bandA coarse danger band for grouping without the raw scoreWhen a band is set
poisonzero.threat_levelSeverity tier, low, medium or high; the field to alert onAlways
poisonzero.evidence.presentWhether grounded evidence was found for the verdict (boolean)Always
poisonzero.evidence.groundedWhether that evidence is grounded in the change (boolean)When evidence is present
poisonzero.evidence.hashSHA-256 of the evidence excerptWhen evidence is present
poisonzero.evidence.lengthLength of the evidence excerptWhen evidence is present
poisonzero.evidence.quoteThe evidence excerpt itself, redacted or verbatim per detail levelOnly at detail redacted or full, and only for a threat level high event
poisonzero.chunk.indexIndex of the evaluated window when the change was chunkedWhen the change was windowed
poisonzero.chunk.countNumber of evaluated windowsWhen the change was windowed
poisonzero.file.path_hashSHA-256 of the file path; the path itself is never emitted at the default levelAlways
poisonzero.model.tierThe detection model tierWhen the model tier is set
poisonzero.model.versionThe detection model versionWhen the model version is set
poisonzero.model.sha256SHA-256 of the detection model artifactWhen the model hash is set
poisonzero.decision.actionWhat the daemon did: flag, detected_kept, quarantine_reversible or revert (allow is never exported)Always
poisonzero.decision.reason_codeWhy, when applicable: malformed_output, degraded_score or ungrounded_evidenceWhen a reason applies
file.pathThe file path, redacted or verbatim per detail level, in the standard semantic-conventions fieldOnly at detail redacted or full, and only for a threat level high event
security_rule.nameThe model identity, mirrored into the OpenTelemetry security namespace for generic SIEMsAlways
security_rule.versionThe model version, mirrored into the security namespaceWhen the model version is set
security_rule.categoryThe attack category, mirrored into the security namespaceWhen a category is set
security_rule.uuidThe model artifact identifier, mirrored into the security namespaceWhen the model hash is set

Where it goes

The stream runs daemon to your collector over OTLP/HTTP. Any OpenTelemetry-compatible collector or backend works, for example:

  • Grafana
  • Datadog
  • Splunk
  • Elastic
  • Your own OpenTelemetry collector
It never touches the PoisonZero cloud. The OTLP stream goes daemon to your collector, full stop, and works with zero cloud connectivity, private and on-prem daemons included.

Detail level

You decide locally, per export profile, how much each event carries. Hashes is the default:

LevelWhat it adds
hashes (default)Hashes, enums and numbers only; no file path and no evidence excerpt.
redactedAdds a redacted file path and a redacted evidence excerpt.
fullAdds the verbatim evidence excerpt: a deliberate local decision.
Content (file path or evidence excerpt) is attached only for a proven-poisoning (threat level high) event, never for the lower bands. The full level is reachable only from a local profile, never through remote config, and Private mode always stays at hashes.

Configuration

The export is configured per daemon through a named export profile, the same pattern as the BYO-inference profiles. Standard OpenTelemetry environment variables are respected:

VariableEffect
OTEL_EXPORTER_OTLP_LOGS_ENDPOINTFull OTLP logs endpoint, used as-is (no path is appended).
OTEL_EXPORTER_OTLP_ENDPOINTBase endpoint; the daemon appends the standard /v1/logs path.
OTEL_EXPORTER_OTLP_HEADERSCollector headers as key=value,key=value (also the _LOGS_HEADERS variant).

For a fleet, the profile is managed centrally through a dedicated Admin API (/v1/otel-config, GET / PUT / DELETE). Collector authentication headers are held in the backend secret manager, never baked into the daemon image.

Private mode ignores any remote collector configuration and accepts only a loopback or .local collector with enforced hashes, so a private deployment can still emit telemetry to a strictly on-device sink without opening a remote egress path.

The daemon egress it does not use: network and firewall requirements. What the cloud-assisted flow sends for evaluation: what Cloud mode sends.

Was this helpful?

Detection events, right in the stack you already run.

Standard OpenTelemetry, fixed attribute names, and the stream never leaves your network. An Enterprise feature.

Sign me up