What Wavelet sends

Wavelet is local-first: with the on-device models, your audio and your words never leave your Mac. To find bugs and see which features actually get used, the app sends a small stream of anonymous, content-free usage statistics. Here is every byte of it: the literal events, in full.

We send seven events, tagged with a random install ID (a UUID we generate on your Mac, not your name, not your email, nothing tied to your hardware) and the basics needed to tell one release or Mac model from another.

Every event carries only this envelope:

{
  "app_version": "0.5.2",
  "os_version": "15.5",
  "mac_arch": "aarch64",
  "build_channel": "beta",
  "hw_model": "MacBookPro18,1",
  "chip": "Apple M1 Pro",
  "ram_gb": 16,
  "$geoip_disable": true
}

ram_gb is how much memory your Mac has, so we learn which local models fit real machines. hw_model and chip are the Mac model and the chip in it, so we can read speed in the context of the hardware. Every value here is cohort-level: millions of Macs share each one.

1. You installed Wavelet

Sent once, the first time you finish the welcome screen.

{ "event": "install_created", "distinct_id": "b3f1c2a4-..." }

2. You opened Wavelet today

Sent at most once per day.

{ "event": "app_launched", "properties": { "date": "2026-07-03" } }

3. Your dictation tally for a day

How many dictations succeeded, were cancelled, or errored, plus which engine you're on. Counts only. We never see, store, or send a single word you dictate.

The perf list is content-free timing samples, batched into this daily bucket: how long a take was, how many characters it produced, and how long it took. Numbers, never text, and never a timestamp finer than the day.

{
  "event": "dictation_daily_rollup",
  "properties": {
    "date": "2026-07-02",
    "success_count": 12,
    "cancel_count": 1,
    "error_count": 0,
    "backend": "mlx_local",
    "model_tier": "balanced",
    "trial_day": 6,
    "perf": [
      {
        "audio_s": 41.6,
        "chars": 418,
        "latency_ms": 3812,
        "tier": "balanced"
      }
    ]
  }
}

4. A dictation errored

The error's category only (e.g. the network was slow), never its message, never your audio.

{ "event": "error_event",
  "properties": { "code": "paste_failed", "backend": "mlx_local" } }

5. You bought a license

Sent once, and it's the last thing this install ID ever sends. trial_day is how many days you trialed before buying. No key, no email, no amount.

{ "event": "license_activated", "properties": { "trial_day": 11 } }

6. A dictionary suggestion run finished

Wavelet suggests dictionary terms by reading your transcripts on your Mac, locally. We send only how the run went: which engine, the outcome, how long it took, and how many suggestions it produced. Never a suggestion, never a term, never a word you dictated.

{
  "event": "dreamer_run",
  "properties": {
    "engine": "gemma-4-e2b-it-4bit",
    "outcome": "completed",
    "duration_s": 187.7,
    "suggestions": 9
  }
}

7. You finished a calibration

Beta builds only. When you finish scoring your calibration recordings, we send how many passages you read and each model's word error rate as a percentage (lower is better), plus whether the run was a first calibration or a re-run. Never the passages, never your recordings, never a transcript.

{
  "event": "calibration_completed",
  "properties": {
    "clip_count": 12,
    "rankable": true,
    "recalibration": false,
    "models": [
      {
        "model": "qwen3_asr_1_7b_8bit",
        "backend": "mlx",
        "wer_percent": 8.9,
        "clips": 12
      }
    ]
  }
}

What we never send, in any state

Your audio. Your transcripts. Your clipboard. The names of apps or windows you dictate into. Your location. Your IP address (we tell our analytics host to discard it). Anything that identifies you.

Where it goes

PostHog, on their EU servers, with IP capture turned off.

How long we keep it

Aggregate counts for as long as they're useful to improving Wavelet. You can erase everything tied to your install ID anytime with "Delete my usage data."

The paid promise

The moment you activate a license, usage statistics switch off for good and your install ID is retired. After you buy Wavelet, statistics are opt-in only: off unless you deliberately turn them back on.

Where the switch is

Settings → Usage statistics. On by default while Wavelet is in beta; off the instant you ask.