pocket-sync is the housekeeping app for an Analogue Pocket
A GUI tool (Mac, Windows, Linux) for doing stuff with the Analogue Pocket
At a glance
- What is it?
- pocket-sync is a Windows, Mac and Linux desktop application, built with Tauri, for managing the software side of the Analogue Pocket handheld. It installs and configures cores, backs up saves, manages save states, exports corrected screenshots and Game Boy Camera photos, and copies files to the device, and the parts of it that are unusual are the translation workflow and the unusually specific rules about AI generated pull requests.
- Who is it for?
- pocket-sync fits an owner of the Analogue Pocket who wants to install cores, keep backups of their saves and get their screenshots and camera photos out of the device without hunting through folders on a microSD card.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A Tauri app for an FPGA handheld
pocket-sync describes itself as a Windows, Mac and Linux GUI to do stuff with the Analogue Pocket, and the tool is built using Tauri, which is the web frontend and a native shell rather than a pure web application or a native widget toolkit. That choice shows up in the dependency list, where React 19 and react-dom sit alongside the Tauri API and a long list of Tauri plugins for the filesystem, dialogs, the clipboard, logging, the shell, the process, the updater and window state, plus a three.js stack for the 3D parts of the interface. The README quotes a line from a Wired review of the Analogue Pocket, that fan-created apps let you load up a microSD card quickly and effortlessly, which is the gap this project fills. The device is an FPGA handheld that runs game cores as bitstreams, so a host application on your computer is the natural place to manage those bitstreams, the saves that go with them and the media the device produces.
Housekeeping rather than emulation
The feature list is a list of chores. Browse, configure and install cores. Export corrected and upscaled screenshots. Back up and restore save files. Quick links to open game file folders. Browse and manage save states, with bulk delete. Export Game Boy Camera photos. And automatically copy files over to the Pocket. Nothing there is about running a game, which is the point, because the running happens on the device and this is the tool that keeps the device's contents in order. The screenshot export is the feature with a specific reason behind it, since the app corrects and upscales the screenshots it exports. The Game Boy Camera export is the most niche, since it pulls photos out of the save state where the camera game keeps them. There is also an update all action for updating multiple installed cores at once, and autobackup of saves on connection when there are changes.
Getting connected is the part with gotchas
The installation section is short but the caveats are real. You download the installer for your platform from the latest release, and then you have to click through to allow the application on Windows, or right click to allow it on macOS, because the author says he cannot be bothered setting up and paying yearly for the signing process. The SD card has to have been initialised by the Pocket itself before it will be recognised, which is a hardware requirement rather than a software one. Then you plug in the Pocket or insert the card, click Connect to Pocket, select the root folder, the one containing the Assets, Cores and Saves directories, and the app creates a pocket_sync.json file on the device to hold its configuration on the first run. That config file is how the app remembers where things are, and it is written to the card rather than to your computer, which is a sensible choice for a tool that may be used from more than one machine.
Antivirus false positives and Apple notarisation
Two of the sections in the README exist because of platform friction. On Windows, the app can trip Windows Defender and other antivirus products, and the author's response is to ask for a resubmission to the Windows Defender team so the definitions change, since it is a false positive. That is the normal outcome for an unsigned application that bundles a runtime, and the project treats it as a known condition rather than a bug. On macOS, the app has been notarised with Apple since version 5.3.0, which the README explains means Apple has checked it for malware, so there should now be just a single dismissable warning about downloading an app from the internet. The catch is spelled out too, since the notarisation is kept going as long as the GitHub sponsors cover the cost of an Apple Developer membership, and there is a guide in the docs for the cases where the gatekeeper still complains.
Translations run through inlang and ICU messages
The app supports translations into the user's language and locale for most things in the interface, and the workflow is open to anyone, with fink.inlang.com used to edit or create translations and submit them as pull requests. The locale files live under src/i18n/locales, and a contributor adds one for a language such as en and then tweaks the locale specific parts on top of it. Nine languages are listed with their contributors, covering Chinese, Spanish, German, French, Portuguese, Japanese, Vietnamese, Bulgarian and Turkish. The message format is ICU, and the documentation explains the main trick, that the brackets create levels of text to change against text to leave, with an example of a language that is just English but shouting:
{
"item": {
"game_count": "THERE ARE {count, plural, =0 {NO GAMES} one {ONE GAME} other {# GAMES}}"
}
}The plural categories mean a translator has to handle zero, one and other forms rather than one string, which is why a lint script for the locale JSON files exists in the package scripts, using an eslint plugin dedicated to i18n JSON.
The rules for AI generated contributions
One section of the README is about AI contributions, and it is the most explicit policy statement in the project. LLM driven contributions are welcomed if, and only if, they are bug fixes targeting a single or a small number of bugs with reproduction steps given in the pull request, if they target a single feature in a way that does not make more sense as a plugin, and if they do not introduce a new mode that increases the number of variations to test, with the example of a CLI mode requiring every feature to be done twice, or a minimal mode requiring all new user interface work to be checked twice. Large AI driven pull requests touching hundreds of files or lines will not be reviewed, though discussion of large scale changes is welcomed through issues. The reasoning behind the third rule is the interesting one, since a mode that duplicates the surface area of the application doubles the test matrix for every future change, and that cost falls on the humans maintaining it.
Version 7, Tauri v2, and a boundary with the archive
The release history shows active work, with 7.1.1 and 7.1.0 both published on 2026-10-18 and 7.0.3 on 2026-10-17, and the last push on the same day. The 7.1.0 change is the most interesting, since it allows cores to present a list of installable and runnable plugins to the user, and 7.1.1 adds more data fixes and shows suggested plugins in the plugins tab, and 7.0.3 fixes cases where the interface did not refresh when files changed. The roadmap shows the switch to Tauri v2 already done, alongside an input viewer, image packs, an Auto-Repair button for common errors, a Game Boy Palette editor and catalogue, manual MiSTer save file sync, newsfeed support, and support for i18n translations. There is a clear boundary drawn in the FAQ, where the author states he has no involvement in managing the files on the archive and points at the FPGA Gaming Discord, and where a core that is missing from the list may simply not yet be in the OpenFPGA library for the Analogue Pocket, or may need format support added if it was released outside GitHub. The repository is AGPL-3.0 licensed and mixes a Tauri Rust shell under src-tauri/ with a Vite and React frontend under src/, an inlang project file, image pack configuration, and OpenSCAD models for hardware accessories.
Editorial conclusion
pocket-sync fits an owner of the Analogue Pocket who wants to install cores, keep backups of their saves and get their screenshots and camera photos out of the device without hunting through folders on a microSD card. It does not fit someone who expects the app to supply game files, since the project has no involvement in managing the archive and points at the FPGA Gaming Discord for that, and it does not fit a contributor who wants to land a large generated change, since the stated policy is that large AI driven pull requests will not be reviewed. Before you use it, note that the SD card has to have been initialised by the Pocket itself before the device is recognised, and expect a gatekeeper warning on macOS unless the project keeps its notarisation funded.
Frequently asked questions
What is pocket-sync?
It is a Windows, Mac and Linux GUI built with Tauri for managing the Analogue Pocket handheld, covering core installation and configuration, save backups, save state management, screenshot export, Game Boy Camera photo export and automatic file copying to the device.
Why does Windows Defender flag pocket-sync?
The project treats it as a false positive and says the app will be resubmitted to the Windows Defender team so the definitions can change. The Windows build is unsigned, which is the usual cause, and the macOS build has been notarised with Apple since version 5.3.0.
How do I connect the Analogue Pocket to pocket-sync?
The SD card has to have been initialised by the Pocket first so that it is recognised. Then plug in the Pocket or insert the card, click Connect to Pocket, select the root folder containing the Assets, Cores and Saves directories, and the app writes a pocket_sync.json configuration file to the card on the first run.
How are translations contributed?
Through fink.inlang.com, where translations can be edited and submitted as pull requests. The locale files live in src/i18n/locales, messages use the ICU format with plural categories, and nine languages are currently listed.
What is the policy on AI generated pull requests?
They are accepted only for small bug fixes with reproduction steps, for a single feature that would not be better as a plugin, and without introducing a new mode that multiplies the number of variations to test. Large AI driven pull requests touching hundreds of files will not be reviewed, though larger changes can be discussed through issues.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/neil-morrison44-pocket-sync)Was this useful?