On HuggingFace Spaces, telemetry is enabled by default so every person who clicks Obliterate on the public Space directly contributes to the community dataset without any extra steps.
What gets collected
Every telemetry record contains the following fields — nothing more.Model fields
Method fields
Benchmark results
Hardware fields
Identity fields
What is never collected
Thesession_id field is a random hash of time.time() + random.random() + os.getpid(). It is regenerated on every process start and cannot be traced back to a user or machine. You can read the exact generation logic in obliteratus/telemetry.py.
Schema v2: richer structured reports
Beyond the flatBenchmarkRecord, the pipeline also generates schema v2 reports via build_report() that include deeper structural data:
analysis_insights (detected alignment method, cone geometry, recommended directions) and informed extras (Ouroboros passes, final refusal rate).
How to enable telemetry
1
Per-run: the --contribute flag
Add Optionally add context about your setup with Notes are stored as free text in the
--contribute to any obliteratus obliterate command:--contribute-notes:extra field of the record. They help researchers contextualize results in aggregate — for example, whether a run used a non-default prompt set.2
Globally: the environment variable
Set To disable it again:
OBLITERATUS_TELEMETRY=1 to enable telemetry for every run in your shell session or environment:3
Python API: enable_telemetry() / disable_telemetry()
Control telemetry state programmatically:
How telemetry data flows
1
Local write
Every benchmark record is appended to a local JSONL file:
- HuggingFace Spaces:
/data/obliteratus/telemetry.jsonl(persistent storage) - Local install:
~/.obliteratus/telemetry.jsonl - Fallback:
/tmp/obliteratus_telemetry/telemetry.jsonl(ephemeral)
OBLITERATUS_DATA_DIR to override the storage location.2
Background Hub sync
After each write, a debounced background thread uploads your local JSONL to the central HuggingFace Dataset repo (
pliny-the-prompter/OBLITERATUS-TELEMETRY). The sync is debounced: it skips if the last sync was less than 30 seconds ago, preventing Hub API overload during rapid benchmark loops.Each Space instance writes to its own file in the repo (data/{instance_slug}.jsonl), so duplicated Spaces all feed into the same central dataset without write conflicts.3
Leaderboard aggregation
The Leaderboard reads from both the local JSONL and the central Hub dataset, merges and deduplicates records by
(session_id, timestamp), groups by (model_id, method), and computes best/average metrics. See Community Leaderboard for details.Viewing collected data
You can inspect the telemetry file directly at any time:Privacy guarantees
Session ID is not a user identifier
Session ID is not a user identifier
The
session_id is computed as sha256(time() + random() + pid)[:12]. It is generated once per process start, is not stored anywhere except in the telemetry record itself, and cannot be correlated across sessions or machines. It exists only to deduplicate records during leaderboard aggregation.Model name is a public HuggingFace ID
Model name is a public HuggingFace ID
The
model_id field stores the public HuggingFace Hub ID (e.g., meta-llama/Llama-3.1-8B-Instruct). This is the same identifier you pass on the command line. Local model paths are never sent.Hardware info is aggregate, not identifying
Hardware info is aggregate, not identifying
GPU name (e.g.,
NVIDIA A100-SXM4-80GB) and VRAM size are detected via torch.cuda.get_device_name() and torch.cuda.get_device_properties(). These are aggregate statistics shared by many machines and cannot identify you.The full schema is public
The full schema is public
Every field collected is documented in
BenchmarkRecord and build_report() in obliteratus/telemetry.py. The file is intentionally readable. If a field isn’t listed there, it isn’t collected.Telemetry is always opt-in locally
Telemetry is always opt-in locally
The default value of
OBLITERATUS_TELEMETRY is "0" on local installs. It is only "1" by default on HuggingFace Spaces (SPACE_ID env var present), where it is disclosed in the Space README.