Privacy Policy — Loki Fitness

Effective date: 2026-05-24 Last updated: 2026-11-08


1. Who we are

Loki Fitness is operated by UnstablePixel SRL (the "Controller").

For any question about your personal data or to exercise the rights described in Section 9, write to the privacy contact above. We answer within 30 days (one 60-day extension may apply for genuinely complex requests).

2. What this policy covers

The Loki Fitness mobile app (iOS and Android), the web onboarding + payment surfaces at fitness.loki.unstablepixel.com, and the supporting backend API that those clients talk to.

It does not cover:

3. Data we collect

Category Examples Lawful basis How we get it
Account identity Firebase user id, email, display name Contract (Art. 6(1)(b)) — needed to provide the service From Firebase, when you sign in with Google or Apple
Onboarding profile Goal, experience, weekly frequency, equipment, the year you were born, sex (optional), preferred units Contract You enter it during onboarding. The year you were born is also how we check you are 16 or over (Section 11)
Workout data Templates, sessions, sets, weights, reps, RPE, notes, timestamps Contract You log it in the app
Body measurements Bodyweight, height, tape circumferences (waist, hips, chest, shoulders, bicep, thigh, calf, neck), an optional body-fat percentage, date, optional notes Explicit consent (Art. 9(2)(a)) — the health-data consent you give during onboarding You log it in the app. Section 3a
Limitations note Free text you type on onboarding's last screen, or later in your profile: injuries, joints to avoid, movement restrictions. Optional Explicit consent (Art. 9(2)(a)) — the same consent You type it. Your connected AI can read it to plan your program, if you let it see your profile (Section 7). A coach cannot. Section 3a
Niggles — something that hurts Which area to be careful with (knee, lower back, shoulder, spine load, impact), when it started, when to stop being careful, an optional note you typed Explicit consent (Art. 9(2)(a)) — the same consent You tell us, from Something hurts…. Section 3a
Health-data consent Whether it is granted, the wording you agreed to, the platform you agreed on (iOS, Android or web), and when Consent, and our record that it was given (Art. 7(1)) Recorded when you tick the box on onboarding's A bit about you screen, in the app or in the web sign-up
Health-store imports Workouts other apps and devices recorded (activity type, start, end, energy burned, distance) and body-weight readings other apps and scales recorded, each with the name of the app or device it came from Explicit consent (Art. 9(2)(a)) + Art. 6(1)(a) — per data type, off by default Read from your phone's health store, only for the types you switch on. Section 8
Health-store consents The data type, the direction (import, or letting your assistant see imports), whether it is granted, the wording you agreed to, the platform, and the grant / withdrawal times Consent, and our record that it was given (Art. 7(1)) Recorded when you use a switch on the Apple Health / Health Connect screen
Derived insights Personal records, training volume, history aggregations Contract Computed from your workout data
Subscription data Your subscription status, billing cadence and current period end; for web purchases the Stripe customer id, for App Store purchases the store product and transaction reference Contract — needed to grant paid features Sent to this app by our subscription service, after a payment through Stripe (web) or the App Store (confirmed through RevenueCat)
Setup analytics Anonymous counts of which onboarding questions were shown, answered or skipped, and whether you reached the result, the paywall and the connect step. No user id, no device id, no IP address, never your answers Legitimate interest (Art. 6(1)(f)): to see which setup question people give up on, so we can fix it. The data can't be tied to you, and you can turn it off in Settings Sent from the app to our server, which passes the counts to New Relic (EU) without your IP address
AI-connector consents Your user id, the connected AI's client id, the scopes granted, the timestamp Consent (Art. 6(1)(a)) Recorded by the OAuth consent screen when you connect an AI
Tool audit log Your user id, MCP tool called, a SHA-256 hash of the arguments (never the arguments themselves), latency, calling client, and — when the call failed — the error message the AI was shown, which can quote back a value it sent us. When your coach acted on your data, also your coach's user id and the permission they acted under Legitimate interest (Art. 6(1)(f)) — security, abuse prevention, debugging Server-side per request, and per coach action
AI activity log Your user id, who acted (which AI, or your coach), and a short display line for each write made on your behalf (e.g. "Logged Bench Press · 8 reps @ 80 kg"), including writes that failed or were blocked Contract — it is the in-app record of what touched your data Server-side, when a connected AI, your coach or an import writes
Coaching links Your user id and your coach's (or client's), what the coach may see and whether they may edit, when the link started and ended, and who ended it Consent (Art. 6(1)(a)), and explicit consent (Art. 9(2)(a)) for the body measurements a coach sees Recorded when you type your coach's pairing code. Section 7a
Crash diagnostics Stack traces, device model, OS version, app version Legitimate interest — keep the app working Firebase Crashlytics, when an error occurs
Backend telemetry Request traces, error rates, response times, server logs Legitimate interest Server-side, no user-content payload, sent to New Relic (EU)

We do not collect:

Some of what Loki Fitness holds is health data — your height and weight, your tape measurements, a body-fat percentage if you record one, the limitations note you can type (injuries, joints to avoid), and anything you tell us hurts. Under GDPR Article 9 that needs your explicit consent, not just a contract, so we ask for it in words:

Your strength logs — how much you lifted, for how many reps — are the service itself and run on our contract with you, not on this consent.

4. Why we collect each category

In short: to run the service you signed up for, to keep it working, and to satisfy a few specific obligations.

5. Who we share data with (sub-processors)

We use these processors to run the service. Each acts on our documented instructions; each is bound by a Data Processing Agreement.

Processor What they do Where data is processed Transfer mechanism
Microsoft Azure Hosting, Postgres database, Key Vault, Blob storage EU region (West Europe / North Europe) Intra-EU — no transfer mechanism needed
Google Firebase Authentication, Crashlytics EU where supported; Crashlytics has fixed regions EU–US Data Privacy Framework + Standard Contractual Clauses
Stripe Card payment processing for web purchases US (Stripe holds card data; we never see card numbers) EU–US DPF + SCCs
RevenueCat Confirms App Store purchases and their renewals, keyed by your Loki user id US EU–US DPF + SCCs
New Relic Backend telemetry and logs; the anonymous setup counts (off in Settings) EU region Intra-EU — no transfer mechanism needed
The AI provider you connect Whatever you ask it to do with your data The provider's regions Disclosure happens at your explicit request via OAuth consent

Apple's App Store sells in-app subscriptions as the seller, under Apple's own terms and privacy policy; Apple is not a processor of ours. We receive only what we need to grant access (the product, the status, the renewal date), never your payment details.

Apple and Google are not processors of ours for the health store. Apple Health and Health Connect run on your phone; Loki exchanges data with them on the device, under the platform's own permission prompt. Nothing about that exchange — which types are switched on, when the last sync ran — leaves your phone. Records you import land in your Loki account and are then held by the processors above, like any other app data. See Section 8.

A coach you pair with is not a processor of ours either: they see your data because you asked us to show it to them (Section 7a).

We do not sell personal data. We do not share it with advertisers.

6. How long we keep it

When you delete your Loki Fitness data (Section 9), every category above is removed from our systems within 30 days, with three exceptions:

The first two stay until you remove your whole Loki account: Settings → Privacy & data → Delete my Fitness data → Delete my Loki account, or the same option on your account page at loki.unstablepixel.com/account (Section 9). You can also ask us at the privacy address in Section 1, and we handle that within the same 30 days. Be aware of the knock-on: because the subscription record is keyed to that shared sign-in, signing back in to Loki Fitness with the same account restores your paid access. Your workouts, measurements and programs do not come back; the subscription does. Your own audit-log entries are deleted along with your Loki Fitness data; we do not keep a trail of your past activity.

7. AI connectors (Claude, ChatGPT, others)

This is unusual enough to deserve its own section.

Loki Fitness doesn't send your data to any AI company. Neither the app nor our servers use an AI provider. Your data reaches an AI only if you connect your own assistant, and that is up to you: you can change or disconnect it any time.

The app lets you connect an AI assistant — Claude, ChatGPT, or any other client that supports the Model Context Protocol — to your account. Once connected, that AI can call a defined set of tools against your data (read your workouts, log a new set, fetch your exercise catalog, etc.) only within the scopes you explicitly granted at the OAuth consent screen.

What this means in plain terms:

If you do not connect any AI, no AI provider receives any of your data.

7a. Coaching

Loki Fitness lets a coach — another Loki Fitness user who has switched on Coaching mode — follow your training. Nothing is shared with anyone until you pair.

Starting it. Your coach gives you a 6-character code, valid for 10 minutes. You type it under Settings → Coaches → Add coach, and that screen tells you what the coach will see before you confirm. Typing the code and confirming is your consent; we record when the link started.

What your coach sees. Your workout history and sessions, your saved workouts and program, your body measurements, and the insights computed from your workouts (personal records, volume, progress). Body measurements are health data, so showing them to a coach rests on your explicit consent (Art. 9(2)(a)), given on that screen; the rest rests on your consent (Art. 6(1)(a)). Each of you sees the other by the name on your account (your Google or Apple name), or by the first part of your email address if your account has no name; never by a user id. To show it, we keep a copy of that name with your profile, update it when it changes, and delete it with your data.

What your coach never sees. Your limitations note, anything you told us hurts (Section 3a), records imported from Apple Health or Health Connect (Section 8), your equipment and places, your AI connections, your health consents and your subscription.

Edits are off until you turn them on. A new link is view-only. Under Settings → Coaches you can Allow edits, which lets that coach log sessions, edit your workouts and program and record measurements for you; you can switch it off again whenever you like. The coach can never turn it on themselves. Every change a coach makes shows in your Activity screen, and Activity on the coach's card lists what they viewed and changed, for the last 90 days (the tool audit log's period).

Your coach's own AI. If your coach has connected an AI assistant to their Loki Fitness account, it can act for them on your data within the same limits: what they may see, and edits only if you allowed them. That AI's provider then receives what it reads, under your coach's arrangement with it (Section 7).

Stopping it. Settings → Coaches → Revoke ends the link, and the coach can end it too. Access stops immediately. This is how you withdraw the consent above. We keep the record that the link existed, marked ended, for as long as your account (Section 6).

Deleting your account ends every coaching link you are part of, as a coach or as a client. The other person keeps the record that the link existed, without your user id. If you were their coach, anything you changed in their data shows in their Activity as done by "Coach", without your name. Section 6 lists exactly what stays.

8. Health data from your phone (Apple Health / Health Connect)

Loki Fitness can exchange data with the health store on your own phone — Apple Health on iOS, Health Connect on Android. Both directions are off by default and chosen one data type at a time, from Settings → Apple Health / Health Connect, and you can turn any of it off at any time.

What Loki publishes to your phone. Finished workouts — as a strength-training session with its start, its end and its name — and the body weight you logged. These are values you already entered in Loki; publishing puts a copy in a store you control, on your device, behind the platform's own permission prompt. Loki asks for write-only access to these types, and nothing per set, no volume, no notes and no tape measurements are ever written. Nothing new is collected and nothing about publishing reaches our servers.

What Loki reads from your phone — only for the types you switch on. Two things: workouts other apps and devices recorded (the activity type, when it started and ended, the energy burned and the distance) and body-weight readings from a smart scale or another app. These come from a medical-grade store and count as health data under GDPR Article 9, so before a single sample is read we ask for your explicit consent, for each type separately — a sheet that says what is read, where it goes and who sees it — and we record that consent on our server (the type, the wording you saw, the platform, the date). Reading happens when you open the app, over a window capped at 30 days. It never happens in the background.

Where imported records go. Into your Loki account on our servers, marked with where they came from: the platform, the store's own id for that sample, and the name of the app or device that recorded it. Imported workouts are kept apart from the sessions you logged, and imported weigh-ins never overwrite one you typed yourself. Deleting a record in Apple Health or Health Connect does not delete it in Loki — the app says so, and you can delete the record in Loki directly.

Who sees them. Only you — until you separately switch on Let my assistant see imported data. Until you do, no AI connector (Section 7) can read, count or summarise an imported record; we filter them out on our server, not in the app. If you do switch it on, the AI provider you connected becomes a recipient of that data as well, on the same terms as the rest of your Loki data.

Withdrawing. The same switch that granted it takes it back. Turning an import off deletes every record already imported for that type, in the same operation that records the withdrawal — there is no grace period and nothing is kept back. Turning the assistant switch off stops the assistant seeing imported data from then on. Turning a publish switch off offers to delete everything Loki wrote into your phone's store. Deleting your account (Section 9) removes the imported records and the consent record along with everything else.

What Loki never reads. Nothing beyond the two types above — no heart rate, no routes, no sleep, no reproductive-health data, nothing else the store may hold. Loki also ignores the samples it published itself, so your own entries cannot loop back and be counted twice. Which types you switched on and when the last sync ran is bookkeeping that stays on your phone.

Apple and Google are not processors of ours for any of this: the store is on your device and the exchange is local to it (Section 5).

9. Your rights

Under the GDPR you have eight rights over your personal data. The app implements concrete mechanisms for the ones that need them:

Right How to exercise it
Be informed This document
Access (a copy of your data) Settings → Download my data — returns a JSON bundle of everything we hold
Rectification Edit the underlying data in the app (workouts, measurements, profile)
Erasure — your Fitness data Settings → Privacy & data → Delete my Fitness data — removes your Loki Fitness data within 30 days and signs you out; your shared Loki sign-in and your subscription record stay, and your subscription is not cancelled (Section 6)
Erasure — your whole Loki account Delete my Loki account, the last option on the Delete my Fitness data screen, or the same option on your account page at loki.unstablepixel.com/account — deletes your data in every Loki app, any assistant you connected, your subscription record and your sign-in, and cancels a subscription you bought on the web. A subscription billed by the App Store or Google Play only you can cancel, in the store, so cancel it there first: the app names it before anything is deleted. It cannot be undone. You can also ask us at the privacy address in Section 1
Restrict processing Disconnect AI connectors, turn off a coach's edits or revoke the coach, disable optional features
Withdraw consent (Art. 7(3)) Settings → Health-data consent → Withdraw… withdraws the Article 9 consent in Section 3a, which deletes your Loki Fitness data; Settings → Apple Health / Health Connect — each switch withdraws the consent it granted and deletes what that type imported (Section 8); disconnect an AI connector for the consent you gave it; Settings → Coaches → Revoke for a coach (Section 7a).
Portability The export endpoint returns a structured machine-readable JSON
Object Settings → Anonymous setup counts turns the setup counts off; disconnect AI connectors; email the privacy contact for anything else
Avoid automated decision-making Not applicable — we make no automated decisions with legal or significant effect

If you believe we have mishandled your data, you have the right to lodge a complaint with your local supervisory authority. In Romania this is the ANSPDCP (https://www.dataprotection.ro/).

10. International data transfers

Our infrastructure is in the EU. The cross-border transfers that happen are documented in Section 5. Each one has a valid Article 46 transfer mechanism (EU–US Data Privacy Framework certification + Standard Contractual Clauses) where the processor is outside the EU.

Connecting an AI provider is a transfer that happens at your explicit instruction under Article 49(1)(a) — we disclose it clearly via the OAuth consent screen and you can refuse.

Exchanging data with the health store on your phone is not a transfer at all: it happens on your device, between Loki and Apple Health or Health Connect (Section 8).

11. Children

Loki Fitness is for people aged 16 and over. Onboarding asks for the year you were born and does not let you continue if that year means you are under 16 — and because a year cannot tell 15 from 16 in the year someone turns 16, we turn that year away too. The app checks it, and so does our server, on every change to that answer.

We do not knowingly collect personal data from children. If you become aware that a child has provided personal data through the service, contact the privacy address in Section 1 and we will delete it.

12. Security

We follow GDPR Article 32 — appropriate technical and organisational measures. In specific terms:

No system is breach-proof. If a personal-data breach occurs we will notify the supervisory authority within 72 hours and, where the risk to you is high, notify you directly.

13. Cookies (web surfaces)

The web onboarding and payment pages use only strictly necessary cookies before consent — the session cookie that keeps you signed in, the CSRF token, and the consent record itself. We do not run advertising trackers. If we ever introduce optional analytics on the web surface, you will see a separate opt-in banner before any analytics cookie loads.

14. Changes to this policy

We may update this policy when the service changes or the law requires. The "Last updated" date at the top is the canonical version marker: when it changes, this document has changed, and the copy published at this address is always the current one.

There is one in-app step that asks for a new agreement rather than an acknowledgement: if your account is older than the health-data consent in Section 3a, the app asks for it once, on your next launch, and waits for it — the same box, the same wording, before anything else.

Otherwise there is no in-app step that asks you to re-acknowledge a new version. When a change is material — a new category of data, a new recipient, a longer retention period, or anything that narrows your rights — we announce it in the app's What's new, on the next launch after you update. Where a change needs your consent, we ask for it before it applies to you, per data type, on the screen that switches that feature on (Sections 7 and 8).

15. Contact

For privacy questions, data subject requests, or anything in this document that doesn't read clearly to you, write to:

privacy@unstablepixel.com UNSTABLEPIXEL S.R.L. — Str. Victor Babeș nr. 2, Oradea, Bihor, Romania