Collection reference
Your Collection (default ~/Emulation) is the central location for all your emulation data. This page documents its structure and how synchronization works.
Folder structure
Section titled “Folder structure”~/Emulation/├── roms/ # ROM files, organized by system│ ├── snes/│ ├── psx/│ └── ...├── bios/ # BIOS and firmware files, organized by system│ ├── psx/│ └── ...├── saves/ # Save files (memory cards, battery saves), by system│ ├── psx/│ ├── gba/│ └── ...├── states/ # Emulator save states, by emulator│ ├── duckstation/│ ├── dolphin/│ └── ...├── screenshots/ # Captured screenshots, by emulator│ ├── retroarch/│ ├── duckstation/│ └── ...└── frontends/ # Frontend metadata and media └── esde/ ├── gamelists/ # Game lists per system └── media/ # Scraped artwork per systemSaves are organized by system so that different emulators for the same system can share save files. States and screenshots are organized by emulator because their formats are emulator-specific. Kyaraben never reads, modifies, or deletes your ROMs, saves, or BIOS files.
Symlink strategy
Section titled “Symlink strategy”Kyaraben uses symlinks to redirect emulator data directories to your Collection .
For example, Dolphin normally stores GameCube saves in ~/.local/share/dolphin-emu/GC/.
Kyaraben creates a symlink from that location to ~/Emulation/saves/gamecube/.
The emulator runs with its default settings; the symlink transparently redirects
data to your managed location.
What syncs
Section titled “What syncs”When synchronization is enabled, these folders synchronize between devices:
| Content | Sync behavior |
|---|---|
roms/ | Bidirectional |
bios/ | Bidirectional |
saves/ | Bidirectional |
states/ | Bidirectional |
screenshots/ | Bidirectional |
frontends/esde/gamelists/ | Bidirectional |
frontends/esde/media/ | Bidirectional |
All folders use standard bidirectional sync. Deletions propagate to all devices, except ROM folders when ROM deletion protection is on (the default). See protecting ROMs from deletion.
EmulationStation DE gamelists and media
Section titled “EmulationStation DE gamelists and media”When using EmulationStation DE, scraped metadata (game descriptions, ratings, etc.) and media (screenshots, videos, box art) synchronize between devices. Kyaraben strips play statistics (playcount, playtime, last played) before syncing to avoid conflicts, then merges local stats back when importing. This means each device tracks its own play history while sharing metadata and artwork.
Scraped videos can be large. See CLI reference to exclude them from synchronization.
File versioning
Section titled “File versioning”Syncthing keeps old versions of save and state files for 30 days. ROM and BIOS folders do not use versioning.
Protecting ROMs from deletion
Section titled “Protecting ROMs from deletion”ROM folders do not use versioning because ROMs are large and replaceable, so
instead Kyaraben can keep a device’s ROMs even when they are deleted elsewhere.
This is controlled per device by the “ignore ROM deletions” sync setting, which
is on by default. On desktop and Steam Deck you toggle it from the
sync settings. On a headless server use kyaraben sync ignore-rom-deletions on
or off, and kyaraben sync status shows the current state for this device and
its peers.
This lets you free space on one device by deleting ROMs locally without removing them from your other devices. Each device decides for itself: a device keeps its ROMs only if the setting is on for that device. The setting is local and is not shared between devices, so for a device to stay complete it must have the setting on. Deleting a ROM on a device whose peers have it off still removes the ROM from those peers.
If you run a headless server as a sync hub, a good setup is to leave this setting on for the server and turn it off on your other devices. The server then keeps every ROM as a complete archive, while deletions still propagate normally between your other devices so you can free space across them. To put back a ROM you deleted, copy it from the server.
Trade-offs while the setting is on:
- ROM deletions from other devices are not applied, so removing a ROM everywhere becomes a manual action on each device.
- A rename or move is a delete plus a create, so renaming a ROM on another device can leave the old-named copy behind as a duplicate.
Handheld guest integrations such as NextUI have the same setting, but default it off, since a handheld usually wants deletions to free card space.
Resolving conflicts
Section titled “Resolving conflicts”When the same file is modified on two devices before they sync, Syncthing
creates a conflict file instead of overwriting either version. Conflict files
have names like game.sync-conflict-ABCD123-20260307-120000.srm.
To check for conflicts:
- UI: conflict counts appear in the sync status for each folder
- CLI: run
kyaraben sync statusto see per-folder conflict counts
To resolve a conflict:
- Find the conflict file in the affected folder (look for
.sync-conflict-in the filename) - Compare it with the original file and decide which version to keep
- Delete the version you do not want
Conflict files sync between devices, so you only need to resolve them once.