Local-first, by design

Wyrm runs on your Mac and operates directly on your local jj and git repositories. It does not upload, mirror, or sync your source code, commit contents, diffs, or history to any server. There is no “Wyrm cloud,” and there never will be.

When you push or fetch, Wyrm talks to whatever remote you configured — your own GitLab, GitHub, or self-hosted host — exactly like the command line would. Nothing routes through us.

No tracking

The app ships with no telemetry by default. It does not phone home to count your keystrokes, watch what you click, or report which repos you open.

The website uses Plausible — cookieless, privacy-focused analytics that collects no personal data and does no cross-site tracking. We set only strictly necessary cookies: the session cookies that keep you signed in to the account area, plus short-lived ones during sign-in (the address you are verifying, a pending hand-off to the desktop app, and the OAuth verifier). No advertising or tracking cookies.

Telemetry: exactly what’s sent

Crash and performance reporting is strictly opt-in. The first-run tutorial asks once, with two equal buttons. If you skip, the reporting library is never started and Wyrm makes no requests to Sentry. You can change it any time in Settings ▸ Privacy.

Sent only if you turn it on

  • Crashes, panics and unhandled errors, with stack traces.
  • Anonymous performance timings — the same ones the in-app Perf panel shows.
  • App version, release tag, OS name and architecture, and locale.
  • A random installation ID, created on your Mac when you opt in, so one crash hit 100 times can be told apart from 100 people hitting it once. It isn’t linked to your account.

Never sent

  • Your email address, name or account ID.
  • Your IP address: IP capture is turned off, and every event is stripped of it again before it is sent.
  • Repository paths, commit messages, bookmark names or file contents.
  • Home-folder paths: anything like /Users/you/… is reduced to the file name before it leaves your machine.

Prefer the command line? jj config set --user gg.ui.telemetry-enabled false turns it off.

Where your data lives

If you create an account, here’s everything we store and who processes it. All primary data sits in the EU region. See our privacy page for the full processor detail.

What’s storedWhyProcessor
Email addressIdentifies your account; sign-in and receiptsSupabase (EU)
AuthenticationSign-in identities (Google, GitHub, GitLab, Apple) and email sign-in codesSupabase (EU)
Subscription & billing recordsPlan status, invoices, paymentsStripe
Website hosting & deliveryServes the site and account areaCloudflare
Cookieless analyticsAggregate page views, no personal dataPlausible
Transactional emailSign-in codes and account noticesResend
Messages you send usContact-form messages and in-app feedback, so we can replySupabase (EU) · Resend
Diagnostic reportsOnly when you attach one to feedback; deleted after 14 daysSupabase (EU)
Spam protectionChecks that a form submission is not automatedCloudflare Turnstile
Crash reportsOnly if you turn on diagnostics in the app; tagged with a random installation IDSentry

We don’t sell your data, and we don’t share it beyond the processors needed to run the service.

Account & app security

Sign in the way you already trust — Google, GitHub, GitLab or Apple, or a one-time code sent to your email. There’s no password for us to leak.

The macOS app is signed with an Apple Developer ID and notarized by Apple, so Gatekeeper recognizes it as coming from us. Auto-updates are cryptographically signed: the app verifies each update’s signature before installing, so a tampered or spoofed build won’t run.

Reporting a vulnerability

Found something? Please tell us. Email security@wyrmflow.com with the details and steps to reproduce.

We support good-faith security research: if you make a genuine effort to avoid privacy violations, data destruction, and service disruption while investigating, we won’t pursue legal action against you. We aim to acknowledge reports within a few business days and will keep you posted as we work on a fix.

For the full breakdown of what we collect and why, read our privacy policy.