// LEGAL — WHAT THE CODE ACTUALLY DOES
Privacy Policy
LAST UPDATED: 14 AUGUST 2026
Groundrush is a phone companion for the FlySight 2, a GPS logger worn by skydivers and wingsuit pilots. It connects to the logger over Bluetooth, keeps your jump tracks on your phone and analyses them.
This policy was written by reading the app's source code, not from a template. Everything below describes what the code actually does.
The short version
- There is no Groundrush server, and no Groundrush account. Nothing you record is uploaded to us, because there is no "us" to upload it to.
- No analytics, no crash reporting, no advertising. None of it is in the app.
- Your tracks stay on your phone, in the app's own folder, until you delete them, export them, or uninstall the app.
- One thing does leave your phone: a position. When the app looks up the wind for a jump, it sends that jump's latitude and longitude to a public weather service. That is described in detail below, because it is the only part of this policy that matters.
What the app handles
Flight tracks
.CSV files written by a FlySight, and .GPX files. A track contains latitude, longitude, altitude, speed and a timestamp for every sample — that is, a precise record of where you were and when. Tracks get onto the phone either because you imported a file, or because the app downloaded it from a connected FlySight over Bluetooth.
They are stored in the app's own storage area:
- Android:
/storage/emulated/0/Android/data/io.groundrush.app/files/tracks— the app-private external directory. Other apps cannot read it. - iOS: the app's Documents directory, inside the app's sandbox.
Live telemetry over Bluetooth
While you are connected to a FlySight, the device streams position, altitude, velocity, accuracy estimates and satellite count to the phone. This is used to draw the live display. It is not sent anywhere.
Settings and the remembered device
The app stores a few small values in the phone's standard app-preferences store: the Bluetooth identifier of the FlySight you last connected to (so it can reconnect without a new scan), and interface preferences such as the wind-logging toggle and the timezone toggle.
A weather cache
When wind data is fetched (see below), the answer is cached in the app's own folder under weather_cache, in a file whose name contains the position rounded to two decimal places (about 1.1 km) and the hour. This is so that re-opening the same jump does not re-request the same data.
What leaves your phone, and to whom
The app has no backend. The only outbound requests it makes are to public weather and aircraft-tracking services, and every one of them is about the wind at your jump.
When it happens. Opening the analysis view for a track triggers a wind lookup for that track. The app takes the first GPS point of the segment being analysed — its latitude, longitude and timestamp — and asks the services below, in order, stopping at the first one that answers. Nothing is requested in the background, and nothing is requested if you never open the analysis view. A cached answer is reused instead of repeating the request.
What is sent. The coordinates and the date/time of the jump, and nothing else. No device identifier, no name, no track file, no list of your other jumps. As with any internet request, the service also sees your phone's IP address, which it may log; what these services do with that is governed by their own policies, linked below.
| Service | What is sent | When |
|---|---|---|
Open-Meteo — api.open-meteo.com (open-meteo.com) |
Latitude, longitude and the jump's date, as URL parameters, plus the list of wind variables requested | First choice for every wind lookup |
Open-Meteo archive — archive-api.open-meteo.com |
The same parameters | Only if the forecast API has no data for that date (older jumps) |
MET Norway — api.met.no (met.no) |
Latitude and longitude as URL parameters, plus a User-Agent header identifying the app |
Only if both Open-Meteo requests came back empty |
adsb.lol — api.adsb.lol (adsb.lol) |
Latitude and longitude in the URL path, plus a search radius | Real-time wind from nearby aircraft. Present in the code but not reachable from any screen in this release — see the note below |
OpenSky Network — opensky-network.org (opensky-network.org) |
A bounding box of roughly ±75 km around the position, and the jump's timestamp, with an OpenSky username and password you would have to enter yourself | Only if OpenSky credentials have been set. There is no screen to set them in this release, so this request is never made — see the note below |
About the last two rows. The code for both is in the app, but in this release nothing calls it: the adsb.lol path belongs to a wind-delivery feature whose device half is not finished, and OpenSky needs credentials that no screen can enter. They are listed anyway, because the code ships and a future version may enable them — and because a privacy policy that only lists what is convenient is not worth reading.
Note that a jump location is personal information. A dropzone position plus a timestamp says where you were. If that matters to you, do not open the analysis view for tracks you would rather not look up the wind for; everything else in the app works entirely offline.
This website
groundrush.io — where you are reading this — is a handful of static files: pages, one stylesheet, fonts, icons, and the firmware images the flasher hands out. There is no server-side Groundrush code behind it and no database.
- No cookies. The site sets none, and there is nothing to log in to.
- No analytics, no trackers, no advertising. Nothing here counts, profiles or follows visitors.
- Nothing is loaded from anyone else. Every font, stylesheet, script and image comes from
groundrush.ioitself, so no third party learns you were here. - The firmware flasher runs entirely in your browser. The
flysight.txtyou show it is read on your own machine and never uploaded; the only things that page fetches are the firmware list and the firmware file, from this same site.
The site is hosted on Cloudflare Pages. Like any web host, Cloudflare handles the request data needed to deliver a page — your IP address, the time, what you asked for and your browser's user-agent string — and keeps some of it in its own security and error logs, under its own terms. We do not add anything to that, and nothing about your visit reaches us.
What the app does not do
Verified by going through the app's complete dependency list:
- No analytics or telemetry SDK. No Firebase, no Google Analytics, no Amplitude, Mixpanel, Segment, PostHog or anything of that kind.
- No crash or error reporting service. No Crashlytics, no Sentry.
- No advertising SDK and no advertising identifier. Nothing reads the Android Advertising ID or Apple's IDFA, and the app never shows an ad.
- No accounts, no login, no sign-in with anything. There is nothing to register for.
- No contacts, photos, microphone or camera. The file picker is
file_selector, chosen specifically because it does not link the photo library into the app. - No use of the phone's own GPS. The app has no location plugin and asks for no location permission on iOS at all. Every coordinate it handles comes from the FlySight's GNSS receiver or from a file you imported.
- No data is sold or shared with anyone, for the simple reason that none is collected.
Permissions, and why
Android
- Bluetooth (scan and connect) — to find and talk to your FlySight. The scan permission is declared with
neverForLocation, which tells Android that scan results are never used to work out where you are. - Location, on Android 11 and older only — older Android versions refuse to perform a Bluetooth scan at all unless the app holds the location permission. It is declared with
maxSdkVersion="30"so that it does not exist on Android 12 and later, and it is never used to locate you. - Notifications, foreground service, battery-optimisation exemption — only for the optional wind-logging feature, which needs the app to stay alive while the phone is in your pocket. It shows a permanent notification while it runs.
- Storage, on Android 12 and older only — to copy tracks into your Downloads folder when you ask for an export.
iOS
- Bluetooth — same reason.
- Background Bluetooth (
bluetooth-central) — a FlySight drops the link if the phone stops talking to it for 30 seconds, and downloading a jump takes minutes. Without this, locking the screen would kill the transfer. It is used for nothing else.
Sharing and export are yours to trigger
The app can copy a track to your Downloads folder, or hand it to the system share sheet so you can send it to another app, a cloud drive or a friend. Both happen only when you ask for them. Once a file has left the app that way, this policy no longer covers it — the receiving app's does.
Deleting your data
- One track: delete it from the track list in the app.
- Everything: uninstall the app. Both platforms delete the app's private storage — tracks, cached weather, and settings — when the app is removed.
- Exports: files you exported or shared are ordinary files in your Downloads folder or in another app; delete them there.
There is nothing for us to delete on your behalf, and no request to send us, because we hold nothing.
Children
Groundrush is a tool for licensed skydivers and is not directed at children. It does not collect personal data from anyone, of any age.
If you are in the EU / UK
There is no controller-held database here: the app collects nothing to any server, so there is no personal data of yours for us to access, correct, export or erase — all of it is on your device and under your control, and uninstalling removes it.
The one flow that involves personal data leaving your device is the wind lookup described above, which sends a jump's coordinates to the third-party services named there. Those services act on their own account and under their own privacy terms; the app sends them no identifier that would let them tie a request to you personally, though they will see your IP address like any other web server does.
Changes
If the app starts doing something this document does not describe, this document changes first. The date at the top says when it was last revised.
Contact
Questions about this policy: [email protected]