StreamView telemetry
Last updated: 31 May 2026
What StreamView sends to LTC Labs, when, and why. Short version: two anonymous events per session
(app_launched and
app_closed), plus crash reports if the app blows up,
plus an update check at most once a day. No personal data, no terminal content, no commands.
Every category is independently opt-out in Settings → Data → Privacy (and Updates).
What gets sent today
Per app session
StreamView posts once per session to https://www.ltclabs.dev/api/app/update-check at startup. That request carries:
app_launchedas the new session starts- The previous session's
app_closedevent with its session summary, queued locally on shutdown and flushed at the next startup
Closed-session summary
Counts, enums, and booleans only. Never names, paths, or content.
| Field | What it is |
|---|---|
| session_minutes | How long the app was running |
| streams_opened | Streams launched this session |
| streams_open_at_close | Open at shutdown |
| workspaces_count | How many workspaces existed |
| most_used_layout | Grid / MainSidebar / Rows / Single |
| used_* | Booleans: tail file, screenshot paste, Ctrl+Tab, history search |
| theme / default_layout / default_shell | Configured appearance and shell |
| startup_ms / memory_mb_at_close | Startup time and memory at close |
| tokens_today | Estimated tokens seen in AI-pane badges (0 if none). No prompts or names. |
Crash reports
Posted to /api/app/crash with the exception type, message, and stack trace.
No terminal output, no file paths from your machine, no commands. Gated by Send crash reports.
Update check
At most once per 24 hours, posted to /api/app/update-check.
Returns the latest version and a support token. Gated by Check for updates automatically.
Support tickets
Only when you press Help → Contact Support. Submitted with what you typed plus the recent app log (no terminal output). You see exactly what is submitted.
Earlier builds pinged a telemetry endpoint every five minutes. That heartbeat is disabled. Per-action events (workspace added, layout changed, and similar) were removed; their useful signal lives in the session summary as aggregates.
What is never sent
- Terminal output or scrollback history
- Commands, environment variables, working directories, file paths
- Workspace names, stream names, template names, custom-icon filenames
- Window contents, screenshots, keystrokes
- Your email, account info, or anything you typed (outside a support ticket you compose)
How "anonymous" works
The machine is identified by a SHA-256 hash of Windows MachineGuid. The raw GUID never leaves your machine. There is no user account, no login, and no personal info stored on the LTC side. Reinstalling Windows produces a new hash.
Why we send anything at all
- Count distinct hashed machine IDs so we know if anyone is using a release
- First-seen vs last-seen of each hash for retention
- Crash reports and process-launch failures to catch regressions
- Layout, theme, and shell defaults so we ship the settings people actually keep
- Feature-used flags so we know what to keep investing in
Opt-out
Three independent toggles, all on by default, all in Settings:
- Send anonymous usage data (Settings → Data → Privacy). When off, suppresses launched/closed events and drops any already-queued usage events. The startup update-check still happens (it is how the app gets its support token), but its telemetry payload is empty.
- Send crash reports (Settings → Data → Privacy)
- Check for updates automatically (Settings → General → Updates)
Turning all three off leaves only the startup update-check (no event payload) and the support-ticket endpoint (only when you submit a ticket).
Related: Privacy policy · StreamView documentation