Everything stays on your device.

Aski collects nothing. No analytics, no crash reporters, no ad IDs, no third-party SDKs. This page documents every exception — there are three — and how to audit them.

0 third-party SDKs

Not a single analytics, crash-reporting, attribution or A/B-testing library.

0 trackers or ad IDs

Aski never reads IDFA or IDFV. No fingerprinting, no pixels, no beacons.

1 opt-in network call

Strava upload. Explicit, per-session, and fully off by default — tokens live in Keychain.

What stays on your device
  • Workout JSONs

    iCloud Drive · your Apple ID, end-to-end encrypted between your own devices.

  • Session history

    SwiftData, on-device. Never uploaded anywhere by Aski.

  • Heart-rate samples

    HealthKit — writes only, no reads other than permission status.

  • Pain-gate responses

    Local, on-device. Not tied to any identifier.

  • Preferences, onboarding state

    UserDefaults, on-device.

What can leave your device — only if you opt in
  • Strava upload (opt-in)

    A per-session "Upload" toggle. Tokens stored in Keychain, revokable in Profile → Connections or on strava.com at any time.

  • Garmin Connect (opt-in, Phase 2)

    When you connect Garmin from Profile → Connections, finished runs flow into Aski via Garmin’s Activity API and planned runs go out via the Training API. Tokens stored in Keychain, revokable any time. Disabled by default; not active until Garmin Developer Program approval lands.

  • FIT file export (one-tap share)

    Planned running workouts can be exported as binary .fit files through the iOS share sheet — your destination (Garmin Connect mobile, AirDrop to a Wahoo or COROS, email) is your choice. Aski has no awareness of where the file lands once you tap Share.

  • AI coach prompt (in-app handoff)

    Tapping "Write one with my AI coach" copies your goal and current plan state to the clipboard and opens Claude, ChatGPT, or Gemini. What happens next is governed by the chatbot’s privacy policy, not Aski’s — the app has no awareness of the conversation.

  • App Store receipts

    Apple’s system. Aski never sees or logs them.

  • Support email

    If you write to support@aski.app — that’s a normal email, and nothing more.

Common questions
  1. 01

    Do you know who I am?

    No. Aski has no concept of an account. There is no sign-up, no email, no user ID of any kind.

  2. 02

    Do you use Apple Analytics?

    No. The app opts out of Apple’s MetricKit and doesn’t register for any analytics entitlement. Crash reports stay on your device.

  3. 03

    What happens if I delete the app?

    Your workout JSONs stay in iCloud Drive. Your on-device session history is deleted with the app, the same as any other iOS app.

  4. 04

    Can I export my data?

    Yes. Profile → About → tap the version row five times unlocks Diagnostics, which can dump session logs and per-session JSON to the share sheet. Your workout and plan JSONs already live in your iCloud Drive under Aski/Documents/.

  5. 05

    Children’s privacy

    Aski is not directed at children under 13 and collects no personal information from anyone, regardless of age.

  6. 06

    Changes to this policy

    If this policy changes, the new version gets a changelog entry on this site, and an in-app note before any behaviour change takes effect.

The full policy

Aski is a solo iOS and watchOS app operated by Cas van der Hoven as an independent developer. The section above is the short version; what follows is the policy in long-form, for reference.

What the developer can see

Nothing. Aski has no backend. The developer does not operate any server that receives data from the app, does not embed any analytics SDK, crash reporter, advertising identifier, or third-party tracking library, and has no way to read your workouts, sessions, or health data.

What the app reads from your iCloud Drive

Aski reads workout JSON files from the folder Aski/Documents/workouts/ in your own iCloud Drive. This is how AI-generated or hand-authored workouts get into the app — you drop a file into that folder on any of your devices, iCloud syncs it, and Aski imports it.

The app (running on your device, under your Apple ID) is the only thing that touches these files. The developer has no access to your iCloud account. If you uninstall Aski, the app loses its read access to that folder; the files themselves stay under your control in iCloud.

What the app stores locally on your device

  • Session logs. Completed sets, reps, weights, timing, and optional pain notes are persisted via SwiftData in the app's sandboxed storage on your device.
  • HealthKit writes. When you finish a session, Aski writes a workout record (including heart-rate samples from your Apple Watch) to HealthKit on your phone. You control HealthKit access from iOS Settings and can revoke it any time.
  • App settings. Preferences like training mode, PR celebration, and morning-check timing live in UserDefaults, local to the app.

AI chatbots

Aski is designed to work with any AI chatbot you prefer (ChatGPT, Claude, Gemini, a local model, etc.) for generating workout and plan JSON. That interaction happens entirely in your chatbot — Aski has no awareness of which chatbot you used, and there is no integration layer collecting prompts or responses. The chatbot's own privacy policy governs what happens inside that tool.

Phase 1 adds an in-app handoff: tapping Write one with my AI coach copies a prompt containing your goal and current plan state to the clipboard, then opens Claude, ChatGPT, or Gemini via a universal link. The clipboard contents become subject to the chatbot's terms once you paste; Aski never makes a network call to any chatbot API, and never sees the chatbot's reply except as a plan JSON file you save into your iCloud Drive.

Strava (optional, one-way)

You can connect Aski to Strava from Profile → Connections → Strava. When you do:

  • OAuth access and refresh tokens are stored in the iOS Keychain on your device. They are only used to make signed requests to Strava's API from your phone.
  • After each completed session, Aski uploads a session summary (duration, distance where applicable, average heart rate, calories estimate) to your Strava account. This is one-way; Aski does not read anything back from Strava.
  • You can revoke Aski's Strava access any time from your Strava settings.

Garmin Connect (optional, two-way, Phase 2)

Aski's roadmap includes an optional Garmin Connect integration. Phase 1 does not include this integration; the Garmin row in Profile → Connections is disabled until the Garmin Developer Program approves Aski's application. When it ships:

  • Activity API (Garmin → Aski). When you finish a run on your Garmin watch, the activity flows into Aski via Garmin's Activity API webhook. Aski uses it only to link the run to the matching planned PlanItem in your training plan. No third-party sharing, no aggregate analytics.
  • Training API (Aski → Garmin). When you have a planned run on your active training plan, Aski can publish it as a structured workout to your Garmin Connect calendar so your watch knows the intervals before you head out. You control this per-plan and can disable it any time.
  • OAuth 2.0 access and refresh tokens are stored in the iOS Keychain on your device. They are only used to make signed requests to Garmin's API from your phone, never relayed through a backend (Aski has none).
  • You can revoke Aski's Garmin access any time from your Garmin Connect account (Account → Apps), or by tapping Disconnect Garmin in Aski.

Apple services

When you install Aski through the App Store, Apple handles purchase, billing, and delivery. Their handling is governed by Apple's privacy policy. Aski does not receive your name, email, or Apple ID.

Notifications

Aski schedules at most one local notification per session — the next-morning reactivity check, which you can disable from Profile → Training → 24h check after rehab sessions or revoke entirely via iOS notification permissions.

Changes to this policy

If this policy changes in any material way, the effective date above will update and a note will appear in the changelog.

Questions

If anything on this page is unclear, or you'd like to see the exact code that enforces it — write.

support@aski.app