How DuelSync Works
A local-first tournament companion that stays close to KTS while publishing clean read-only snapshots for players.
A companion for KTS
DuelSync does not replace Konami Tournament Software. KTS remains the official source of truth for every tournament it manages.
DuelSync runs beside KTS as a local desktop companion. The organizer workflow stays local-first, with KTS handling the official record and DuelSync providing a modern interface on top of it.
Public sharing is entirely opt-in. An organizer can run an entire event without ever publishing anything online.
Inside the desktop app
Native desktop shell
Runs on the organizer's machine
Stored in AppData
Watched continuously
Tauri desktop shell
React organizer interface
Local FastAPI backend
SQLite in AppData
Following the live .Tournament file
At the start of an event, the organizer picks a KTS .Tournament file. DuelSync remembers that file per tournament : there is nothing to re-import round after round.
The local backend watches the file for changes. As KTS writes updated rounds, pairings, standings, or player data, DuelSync picks them up automatically. A manual Sync now action remains available as a fallback.
KTS stays authoritative. DuelSync never writes back into the KTS file, it only reads from it and presents the data in a more comfortable interface.
Read-only snapshots for players
Organizer triggers publish
Receives sanitized payload
Stores current snapshot
Read-only player page
Publishing is opt-in and explicit. When the organizer chooses to publish, the desktop backend sends a sanitized snapshot of the tournament to the snapshot API.
The public player page reads that snapshot. It is strictly read-only, no editing, no accounts, no comments. Unpublishing the tournament removes public access immediately.
The public payload is intentionally narrow: no internal database IDs, no COSSY IDs, no organizer-only fields. Only what a spectator needs to follow the event.
The source of truth lives on the organizer's machine
All core tournament data lives locally in SQLite, alongside the KTS file it mirrors. There is no cloud database holding the organizer's working state.
The public snapshot is a derived view, not the source of truth. Losing internet connectivity does not stop the event, the organizer keeps running rounds locally and can publish updates again whenever the connection returns.
Move and recover tournaments
Export
Restore
Backups are completely separate from public publishing. Restoring a backup does not republish anything automatically.
What DuelSync deliberately does not do
No accounts, no logins
No public editing
No public COSSY IDs
KTS stays authoritative
What it's built with
Desktop
- Tauri
- React
- Vite
Backend
- FastAPI
- SQLite
Public
- Cloudflare Workers
- Cloudflare Pages
- Cloudflare KV
3D Website Hero
- React Three Fiber
- Three.js
- GSAP ScrollTrigger
The reasoning behind the choices
No Docker for organizers
Offline-first by default
No premature accounts
Decoupled public viewer
Preserve KTS as the official tool
Where this is heading
More polished beta distribution
Improved public publishing controls
Better installer & release process
Organizer feedback loop
Possible future documentation
Curious to try DuelSync?
DuelSync is in private beta. If you organize Yu-Gi-Oh! tournaments and want to take it for a spin, request access below.
DuelSync is an unofficial companion application and is not affiliated with or endorsed by Konami.
