Local CI guard · v0.1.0

Know the telemetry tab before it reaches prod.

Compare a real, redacted OTLP sample through today’s Collector config and tomorrow’s. Catch cardinality, retention, and volume jumps at review time—not invoice time.

  • No upload
  • No vendor lock-in
  • Body fields dropped by default
An illustrated night market where glowing traces, metrics, and log receipts pass through a bright budget gate.
Every signal gets a price board before export.
INGEST / MONTHRETAINED STORAGEEGRESSACTIVE SERIES

One diff. Four totals.

A budget gate built for the Collector you already run.

  1. 01

    Capture a minute

    Use bounded OTLP/HTTP JSON or compact JSONL. The sample stays on your machine.

  2. 02

    Compare pipelines

    Run the same records through baseline and proposed processor chains.

  3. 03

    Gate the change

    Declare limits in TOML. Get readable output or stable JSON and exit code 2 on failure.

Local estimate counter

Try the shape of the gate.

This browser demo uses compact JSONL and the sample policy shown below. Nothing leaves this page. The CLI handles full OTLP envelopes and Collector YAML.

INPUT TICKETJSONL · local only

One compact span, log, or metric object per line.

sec
%
PRE-MERGE CHECKFAIL

Proposed ingest exceeds the 20% change budget.

Estimated baseline and proposed telemetry totals
MeterBeforeAfterΔ
Ingest / mo
Storage
Series
3 sensitive fields droppedAggregated in this tab. Never uploaded or stored.

HEURISTIC ESTIMATE · calibrate against 3 releases

Set up the stall

One binary. One budget file. No account.

Build with stable Rust today. Release archives are produced by the factory after merge.

TERMINAL
cargo install --git https://github.com/B-Divyesh/sf-telemetry-budget-guard

Honest by design

An estimate you can inspect.

Modeled
Attribute/resource actions, strict and regexp filters, probabilistic sampling, duplicated pipelines.
Made visible
Unsupported processors are warnings, never quietly treated as proof of accuracy.
Protected
Body, prompt, content, message, and query fields are removed before aggregation by default.