Browse by type
A fast and simple homebrew save management framework for 3DS and Switch, written in C++.

Checkpoint is created following ideas of simplicity and efficiency. The UI has been designed to condense as many options as possible, while keeping it simple to work with.
Moreover, Checkpoint is extremely lightweight - while being packaged with a nice graphic user interface - and is built using the most recent libraries available.
Checkpoint doesn't rely on external title lists or filters to work: titles are detected and filtered automatically, so it doesn't need constant user maintenance to retain full functionality.
Checkpoint is a framework, not just an app: everything it can do to a save is also reachable from scripts you can write yourself and drop on the SD card, so the console can do things no release ever shipped with. See Scripting.
Checkpoint backs up and restores save data for:
Both versions share the same core feature set:
On Switch, Checkpoint also provides:
Checkpoint runs scripts written in C, interpreted on the console. A script is a single .c file on the SD card: no compiler, no rebuild, no reflash. Put it in the right folder and it shows up in the Scripts menu (SELECT on 3DS, Minus on Switch) the next time you launch the app.
Scripts get a native API — #include <checkpoint.h> — that reaches the same machinery the app itself uses:
mkdir -p, existence checks, plus ordinary C file I/Ostdio, stdlib, string, unistd, ctype, math, timeA running script owns the screen: its output streams into a scrollable log pane while its dialogs and progress bars take the other screen (3DS) or a card over the transcript (Switch). Holding B aborts any script, even one stuck in an infinite loop, without rebooting the console.
A few scripts ship with the app already:
rclone serve webdav, …): uploads only what isn't there yet, and can download a backup back onto the console (setup guide)Writing your own is documented in full in scripts/README.md: the API reference, the interpreter's limits, recipes, and a checklist for both human and AI authors. scripts/examples/example.c is a runnable guided tour, one menu entry per API area. Before copying a script to the SD card, parse-check it on your PC with tools/scriptlint.sh.
Checkpoint comes with chlink, a companion command line app for your PC that talks to Checkpoint's wireless save transfer feature. With chlink you can send save backups from your PC to the console and receive backups from the console to your PC, over your local network - no cables and no SD card swapping required.
Transfers are protected by a 4-digit PIN displayed on the console, and chlink automatically recognizes backups coming from a Checkpoint SD card layout, so title and backup information are filled in for you.
chlink is a single, dependency-free executable available for Windows, macOS and Linux. You can download it from the releases page, or build it yourself from the tools/chlink folder.
You can use Checkpoint for 3DS with both cfw and Rosalina-based Homebrew Launchers. *hax-based Homebrew Launchers are not supported by Checkpoint.
Checkpoint for Switch runs on homebrew launcher. Make sure you're running up-to-date payloads.
The first launch will take longer than usual, due to the working directories being created - Checkpoint will be significantly faster upon launch from then on.
Checkpoint relies on the following folders to store the files it generates. Note that all the working directories are automatically generated on first launch (or when Checkpoint finds a new title that doesn't have a working directory yet).
sdmc:/3ds/Checkpoint: root pathsdmc:/3ds/Checkpoint/config.json: configuration filesdmc:/3ds/Checkpoint/logs: log filessdmc:/3ds/Checkpoint/saves/<unique id> <game title>: root path for all the save backups for a generic gamesdmc:/3ds/Checkpoint/extdata/<unique id> <game title>: root path for all the extdata backups for a generic gamesdmc:/3ds/Checkpoint/scripts/universal: your own scripts, offered for every titlesdmc:/3ds/Checkpoint/scripts/<title id>: your own scripts, offered for that title onlysdmc:/switch/Checkpoint: root pathsdmc:/switch/Checkpoint/config.json: configuration filesdmc:/switch/Checkpoint/logs: log filessdmc:/switch/Checkpoint/saves/<title id> <game title>: root path for all the save backups for a generic gamesdmc:/switch/Checkpoint/scripts/universal: your own scripts, offered for every titlesdmc:/switch/Checkpoint/scripts/<title id>: your own scripts, offered for that title onlyAll the options that used to require manual edits to the configuration file can now be managed from the Settings section, directly on the console. The config.json file is still stored in Checkpoint's working directory, but you're not required to touch it anymore.
Checkpoint displays error codes when something weird happens or operations fail. If you have any issues, please ensure they haven't already been addressed, and report the error code and a summary of your operations to reproduce it.
Additionally, you can receive real-time support by joining FlagBrew's Discord server (link below).
devkitARM and devkitA64 are required to compile Checkpoint for 3DS and Switch, respectively. Learn more at devkitpro.org. Install or update dependencies as follows.
The scripting engine lives in a submodule, so a fresh clone needs:
git submodule update --init --recursive
dkp-pacman -S libctru citro3d citro2d tex3ds
dkp-pacman -S libnx switch-pkg-config deko3d switch-freetype switch-libjpeg-turbo
Build from the repository root with make 3ds or make switch.
This project is licensed under the GNU GPLv3. Additional Terms 7.b and 7.c of GPLv3 apply to this. See LICENSE.md for details.
Without you, this project wouldn't have existed. Thank you.
$ claude mcp add Checkpoint \
-- python -m otcore.mcp_server <graph>