Permission request: AnkiWeb sync for Recall, a review-only client for the Light Phone III

What I’m Building

I’m building Recall (working title), an open-source (AGPL-3.0) spaced-repetition client for LightOS (the Android-based OS on the Light Phone III), which recently opened third-party development. I’d like to request permission for it to sync with AnkiWeb.

Recall is a deliberately minimal (in line with Light’s ethos), review-only client. Users study their due cards on the phone. Deck creation, editing, and browsing stay on desktop/AnkiDroid. No note/deck/notetype editing functionality exists at all.

How It’s Built

Everything scheduling- and sync-related is upstream Anki code, never reimplemented.

  • Recall runs Anki’s official backend on-device via the AnkiDroid team’s published bindings (io.github.david-allison:anki-android-backend), which Light has merged to their SDK’s dependency allowlist.
  • The only write the client ever performs is answer_card with the SchedulingStates the backend itself issued. It never computes or modifies scheduling data.

Details

  • The collection lives on the phone, so studying works offline. It syncs when you start or finish a session, plus the occasional background check. This is basically how AnkiDroid already works, but the user base is much smaller. Light Phone owners are a niche, and Recall would only do reviews.
  • Custom sync servers are supported and are the only thing the app will sync to until/unless the Anki team grants the app AnkiWeb sync permissions. AnkiWeb would be opt-in for users logging into their own existing accounts.
  • Client identification: the sync traffic is rslib’s, so it identifies like the official clients do. I’ll set whatever client string/version you’d prefer.
  • I pin to stable backend releases and will follow whatever protocol-version or minimum-version policy you want third-party clients to observe.
  • Naming: I deliberately kept “Anki” out of the product name out of respect for the trademark. It’s “Recall,” described as Anki-compatible.
  • Jake told me in Discord that amgi recently went through this process (not sure for what), so I hope this request is familiar.

Happy to answer anything.

PS, I was told to reach out to Damien. Not sure who that is. :sweat_smile:

David (ChopinDavid on GitHub, dvdutch on Discord)

We handle personal requests and exceptions from the Terms of Service in the private ticket system. But make sure you’ve reviewed that ToS first.