Obscura emits telemetry events for integration with application metrics. Telemetry metadata must describe behavior without including raw text, span values, request parameters, or replacement source values.
Events
Current events include:
[:obscura, :analyze, :start][:obscura, :analyze, :stop][:obscura, :anonymize, :stop][:obscura, :structured, :redact, :stop][:obscura, :logger, :redact, :stop][:obscura, :vault, :token, :stop][:obscura, :vault, :lookup, :stop][:obscura, :rehydrate, :stop][:obscura, :stream, :rehydrate, :stop][:obscura, :llm, :redact_messages, :stop][:obscura, :llm, :rehydrate_response, :stop][:obscura, :analyzer, :analyze_many, :stop][:obscura, :recognizer, :ner, :analyze, :stop][:obscura, :recognizer, :ner, :analyze_many, :stop][:obscura, :recognizer, :ner, :serving, :build, :stop][:obscura, :recognizer, :ner, :real_model, :analyze, :stop][:obscura, :eval, :real_model, :stop][:obscura, :cli, :detect, :stop][:obscura, :cli, :redact, :stop][:obscura, :eval, :prediction_export, :stop][:obscura, :profile, :preparation, :preparation_started][:obscura, :profile, :preparation, :stage_started][:obscura, :profile, :preparation, :stage_progress][:obscura, :profile, :preparation, :stage_completed][:obscura, :profile, :preparation, :stage_failed][:obscura, :profile, :preparation, :preparation_completed]
The dispatch boundary keeps only allowlisted numeric measurements, including
durations, latency, sample counts, and preparation byte/percentage progress.
Metadata is limited to known
operational keys and safe atom, number, boolean, or recursively safe list
values. Arbitrary binary metadata is replaced with :redacted; unknown keys
and unsupported values are dropped. Model IDs, paths, exception messages,
tokens, and arbitrary caller labels are therefore not emitted by this
boundary.
Preparation metadata may include safe profile/model aliases, model index/count, stage, cache status/source, backend, status, and diagnostic code. It never includes the effective cache path, repository URL, authentication token, or low-level error text.
Safety Rules
Telemetry metadata must not include:
- raw input text
- analyzer result values
- request params
- Logger metadata values
- replacement source values
- raw vault values
- LLM prompt or response content
- full vault entries
- model token text
- raw model outputs
- prompts
- authorization headers
- API keys or bearer tokens
Obscura filters unsafe metadata keys before delegating to
:telemetry.execute/3. The internal telemetry dispatch helper is not part of
the public API. Telemetry handlers execute in the caller process and are
trusted application code; keep handler failures and handler-owned state from
capturing sensitive arguments outside Obscura's sanitized event payload.
Disabling Events
Most public APIs accept telemetry: false when tests or local callers need to disable events.