The 4,323-file repository is for the desktop app
Anki schedules flashcard reviews around the learner's recall instead of showing every card at the same rate. The desktop application supports formatted card templates, audio, images, video, scientific markup, add-ons, and free collection synchronization through AnkiWeb. This repository contains that computer version, not every Anki-branded client. The official site points Android users to the separately developed AnkiDroid project and identifies AnkiMobile as the official iOS app. That split matters when reporting bugs or planning a feature across devices.
The codebase is correspondingly broad. Our checkout held 4,323 files and about 180,969 lines of source in 20.9 MB before dependencies. GitHub identifies Rust as the primary language, while the tree also contains Python libraries, a Qt desktop layer, TypeScript and Svelte interfaces, protobuf definitions, and its own build scripts. A change to card scheduling can have different risks from a visual editor change, and a collection-format change can reach sync clients outside this repository.
Packaged v26.08.1 is the right route for learners
The repository README sends ordinary users to the Anki website and packaged betas. That is sound advice. Version 26.08.1 has installers for supported desktop platforms, while the development guide says the first source build downloads and compiles many dependencies. Prebuilt Python wheels offer a middle route for scripts, add-on completion, or local library use. A learner who only wants spaced repetition gains nothing from debugging Rust, Qt, Vite, and platform headers before making the first deck.
What happened when we ran it
Our run used commit 20c475f in an unprivileged container with 3 CPUs, 8 GB of RAM, and Node 22. Yarn installation succeeded in 37 seconds, adding 688 packages and occupying 507 MB. The repository itself measured 20.9 MB. The lab identified 8 CI workflow files, no Dockerfile, and no tests directory. Those signals describe the checkout and the Node-focused harness; they do not cover Rust crates, Python environments, Qt libraries, or downloaded build artifacts.
The build failed with exit code 1 after 4 seconds. Its log warned that tsconfig.json could not extend ./.svelte-kit/tsconfig.json, then Vite failed to load /work/repo/ts/vite.config.ts. The final error was ENOENT, with Node unable to inspect /work/repo/out. We do not know from that tail why the generated directories were absent. The test phase was skipped because the Node harness found no test script or target, so this run produced no test count.
The official check uses Ninja, not the skipped Yarn target
Anki's development guide tells contributors to install Rustup and N2 or Ninja, then run the application through ./run. The Rust version is pinned in rust-toolchain.toml; newer toolchains may build yet fail tests, and older ones may fail entirely. Ninja 1.10 or newer is accepted, with N2 recommended for clearer status. The repository is orchestrated as one multi-language product, which explains why a direct web build can expect files generated elsewhere even though the log does not prove that was our failure's cause.
The full documented check is ./ninja check, with narrower targets such as check:svelte:editor. Our lab did not execute that command. It found no Yarn test target and stopped after the 4-second build failure. Contributors should therefore reproduce the supported top-level route before filing a build bug or merging a patch. The guide also provides ./ninja format, ./ninja fix, and Cargo's Clippy fixer, while the pre-push hook runs the full check rather than doing so on every commit.
AGPL-3.0 covers Anki, with named exceptions
The LICENSE file places Anki under GNU AGPL version 3 or later, with portions contributed by users under BSD-3. It separately lists files and bundled components under CC BY 4.0, MIT, Apache 2.0, BSD, LGPL, or public-domain terms. Documentation in docs-site uses CC BY-SA 4.0. GitHub consequently reports no single SPDX license for the repository. Anyone distributing a changed desktop build should review these terms rather than treating the top-level license as a one-line permissive grant.
Contribution policy is equally explicit. Large changes should be discussed on the forum before work starts, and ordinary pull requests must link an open issue or may be closed automatically. New behavior generally needs tests. AI-assisted code is allowed only when the submitter understands and reviews every change. Across a 180,969-line repository, those rules reduce speculative work and put a high bar on drive-by patches. Teams seeking a lightly governed base for a private fork may find that process and the AGPL obligations mismatched with their plans.
Version 26.08.1 is active, with specific regressions open
GitHub recorded the last push on September 2, 2026 and 481 combined open issues and pull requests. Stable v26.08.1 arrived on August 5 with fixes for broken custom-study links and a modal button. A v26.09 beta followed on August 25. Recent closed reports include a theme-switching bug, a deck modification-time issue, and a filtered-deck sorting error. The current push, release, beta, and closure activity together show maintained software despite the sizeable queue.
Open issues still matter to deployment choices. Issue 5499 reports a repeatable first-launch crash for the v26.08.1 Flatpak on Debian 13 inside ChromeOS Crostini. Issue 5503 says Anki Desktop 25.09.4 can paste a broken image.png reference from Discord on Windows 10 even with add-ons disabled. Neither report covers every installation. Both identify test cases worth adding when an organization distributes Anki with managed profiles, media-heavy decks, or a fixed Linux packaging method.
Add-ons beat a core fork for most custom behavior
Move into the core repository only when the required behavior cannot live behind supported hooks or external scripts. At that point, use a separate development profile because ANKIDEV disables automatic backups, pass the documented ./ninja check, and test real collection upgrades and sync across the clients in scope. Our 4-second build failure is enough to reject the direct Yarn route we measured. It is not evidence against the packaged study app, which remains the best-supported choice for most Anki users.

