Steer

Privacy Policy

Effective on launch

Steer has no analytics, no telemetry, and no account. Controller input is processed entirely on-device and never leaves your Mac. The app reaches the network in three situations, all either licensing or something you start: licence activation and checks, update checks you start yourself, and, only if you import a profile from a link, fetching that one file. Each is described in full below.

Controller input

Everything Steer does with your controller (cursor, keystrokes, bindings, profiles, macros) happens locally. No input data is recorded or transmitted, ever.

Purchases and licensing

Steer is sold through Lemon Squeezy, which takes the payment and is legally the seller. Checkout happens on their pages: your name, email address, payment details and billing information go to Lemon Squeezy, which is legally responsible for that purchase data under its privacy policy. I receive the order details needed for support and refunds; I never see your payment details.

When you activate a licence, and afterwards when the app confirms a stored licence is still valid, Steer sends your licence key and the instance name “Steer (macOS)” to Lemon Squeezy's licence server at api.lemonsqueezy.com. As with any internet request, the server also sees your IP address. That is the entire exchange. Your licence key is stored in the macOS Keychain, not in a plain-text file, and if the server can't be reached the app keeps working for a while rather than locking you out.

Updates and downloads

Update checks are user-initiated only. Steer never contacts the update feed on launch or on a schedule; nothing happens until you choose “Check for Updates…”. When you do, the app fetches the update feed from steer.seanfloyd.dev and, if you install, downloads the new version from GitHub. This site is served by GitHub Pages and the app itself is hosted on GitHub Releases, so GitHub sees the standard request data any web host does, including your IP address, whenever you download or update Steer.

Importing a profile

Steer never fetches profiles on its own. If you paste a link to import someone else’s setup, the app fetches that one file from the URL you gave it, and that host sees the standard request data any web host does, including your IP address. Nothing is fetched unless you paste a link.

Diagnostics

Steer collects crash and performance reports through Apple's own reporting system (MetricKit) and stores them on your Mac only. Nothing is uploaded automatically. A report leaves your machine only when you choose “Report a Problem”, which drafts an email in your own mail client with the diagnostics attached; you see exactly what's in it before deciding to send.

Permissions

Steer requests one macOS permission, plus an optional second:

Accessibility is mostly an output permission here: it is what lets Steer post the cursor, scroll and keyboard events your controller stands in for. Three optional features also reach into the frontmost app, and only while you are using them: the menu palette reads the frontmost app's menu bar to list the menus for you and activates the item you pick; cursor magnetism reads the position and size of the element under the pointer; and window snap sets the window's position.

Steer never records or transmits your input, never watches your keystrokes, and never reads the contents of your documents or your screen. It reads the clipboard only where you would expect it to: selecting text or a link in another app and choosing Services → “Bind to Steer” sends that selection to the binding editor, and copying and pasting a binding inside the bindings editor checks the clipboard for one.

Who runs Steer

Steer is built and operated by Sean Floyd in Ottawa, Canada. For anything privacy-related, including a copy or deletion of what little I hold (support emails and order records), write to steer@seanfloyd.dev.