Skip to content

Privacy & security

The user is the customer, not the product.

Salience runs on your machine. Your data stays on your machine. This page is an audit trail of that claim — what's stored where, what (if anything) leaves the device, and how to verify it with your own eyes.

Where your data lives

  • Credentials (GitHub tokens, Jira tokens, etc.) — encrypted SQLite at ~/Library/Application Support/clegginabox.salience/, using SQLCipher with a key stored in the macOS Keychain. Salience never transmits these.
  • Entities (branches, PRs, tickets, build status) — fetched from the tools you've connected and held in a local store at the same path. Salience never sends entity data off the machine.
  • Preferences — plain JSON at ~/.salience/preferences.json (see Configuration).

There is no Salience server. There is no cloud sync. There is no analytics pipeline.

Network monitor

Salience makes outbound HTTP calls to the tools you've connected (GitHub, Bitbucket, Jira) plus Sentry while crash reporting is enabled. To audit them with your own eyes, open Network Inspector in the sidebar. Every request the app makes is listed there: destination, method, response status, timing.

If the network monitor shows a host you don't recognise, that's a bug — please open an issue.

Command monitor

Salience shells out to run local commands — git for-each-ref, git fetch, git status, sometimes npm or other project commands you've configured. Command Inspector in the sidebar shows every command the app has run, with its arguments and exit code.

This is for the same reason as the network monitor: visibility, not trust. If a command looks wrong or unexpected, you can see exactly what fired and report it.

Crash reporting (Sentry)

Salience ships with Sentry crash reporting enabled by default in the current early-adopter release. Four toggles in Settings → Privacy control what's sent:

ToggleDefaultWhat it sends
Master switch (enabled)OnWhether to initialise Sentry at all. Off = nothing sent, ever.
ErrorsOnPanics and uncaught exceptions.
Performance tracesOnA 10% sample of operation timings.
BreadcrumbsOnTrail of recent log lines accompanying an error.

Sentry errors, traces, and breadcrumbs show up in Network Inspector as calls to *.ingest.sentry.io. You can verify the master switch works by toggling it off and watching those calls stop in real time.

One exception: minidumps (the binary dumps captured after a hard crash) are uploaded by a separate crash-reporter process and do not appear in the Network Inspector. They are only ever sent after the app has crashed, never during normal operation, and the master switch still gates them — toggling Sentry off prevents the crash reporter from starting at all.

The Sentry DSN is hard-coded in the binary; we use Sentry's official Rust SDK with no proxying. No third-party trackers, analytics SDKs, or fingerprinting libraries are bundled.

Future direction: defaults will flip to opt-in once Salience exits early-adopter status.

What we never collect

  • Entity contents (branch names, ticket titles, PR descriptions, comments)
  • Credentials or token material
  • File paths from your projects (beyond what panics happen to include — Sentry's before_send strips known patterns)
  • Anything from another user — Salience is single-user

Reporting a privacy issue

If you notice traffic Salience shouldn't be making, a value being stored you didn't expect, or anything else off — please open an issue or email pclegg@gmail.com.

Salience is a desktop app for developers.