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_cardwith theSchedulingStatesthe 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. ![]()
David (ChopinDavid on GitHub, dvdutch on Discord)