A local match, draft, and collection tracker for Magic: The Gathering Arena.
Scry 2 reads the Player.log file that MTGA writes on your machine, records
each match and draft as it finishes, and serves a dashboard at
http://localhost:6015. Your game data stays in a SQLite database on your
disk. There are no accounts and no upload.
It is inspired by 17lands, but it is self-hosted and tracks one player, across both Constructed and Limited.
Linux only. A Windows build exists and installs, but it is experimental and lacks the collection features. macOS is not supported. See Platform support.
- Matches — every match, with the deck you played, the format, the opponent's colours, the result, and (for Standard) a label for the opponent's archetype. Summary stats: matches, win rate, average turns, average mulligans.
- Decks — one entry per deck in MTGA, with win rate, games played, Best-of-1 and Best-of-3 split, and a history of every version you saved. Per deck: hand profile and keep rate, per-card win rate and impact, and on-the-play versus on-the-draw results.
- Drafts — every pick in every pack, and the deck you submitted.
- NetDecks — Standard decklists fetched daily from MTGO tournament results, grouped by archetype and scored against your collection: buildable now, craftable with your wildcards, or short. Each list has an MTGA import string. Scoring requires the collection reader (Linux only); without it, lists show without ownership information.
- Player — matches, record, win rate, average turns, current streak.
- Ranks — rank over time, one chart per format, selectable by season.
- Home — a small set of observations computed from your own data (Bo1 versus Bo3 gap, on-play versus on-draw, mulligan outcomes, rank milestones, deck colour outliers, and similar). The wording is fixed per observation; only the numbers come from your data.
- Economy — gold, gems, wildcards, and vault progress, with the event entries and inventory changes they came from.
- Wildcard crafts — which cards each wildcard spend went to, derived from collection snapshots (Linux only).
- Collection — a snapshot of your MTGA collection, read from the running MTGA process's memory, refreshed automatically when log activity shows the game is running. Set completion per set. The reader can be turned off in Settings. Linux only.
- Cards — the MTGA card database, searchable. Card data comes from your local MTGA install joined with Scryfall bulk data; images come from Scryfall on demand and are cached on disk.
- Updates — an hourly check against GitHub Releases. Applying an update downloads the archive, verifies it against the published SHA-256 sum, and hands off to the bundled installer. You can cancel before the installer starts.
- Operations — rebuild any projection from the stored event log, re-ingest the log, export errors, and open a pre-filled GitHub issue. Nothing is sent to GitHub until you confirm in your browser.
- Console — a filterable view of the app's own log output.
| Platform | Status | What works |
|---|---|---|
| Linux x86_64, glibc, systemd | Supported | Everything above |
| Windows 10 / 11 x86_64 | Experimental | Matches, decks, drafts, ranks, economy, cards, updates. Collection reading is not implemented on Windows, so Collection, wildcard crafts, and NetDecks ownership scoring are absent |
| macOS Apple Silicon | Not supported | CI produces an archive, but there is no installer, autostart, or first-run path. Do not use it |
MTGA has no native Linux build. Scry 2 finds Player.log under Steam
(native or Flatpak) with Proton, and under Lutris. Any other Wine prefix
can be set by hand in Settings or during first-run setup.
Linux needs a musl-free (glibc) distribution and a systemd user session. Alpine and other musl distributions are not supported.
Scry 2 needs MTGA's Detailed Logs setting. Without it, Player.log
contains only plain-text lines and there is nothing to parse.
In MTGA:
- Open Options → View Account.
- Enable Detailed Logs (Plugin Support).
- Restart MTGA if it was already running.
The dashboard warns you if Detailed Logs is off.
curl -fsSL https://raw.githubusercontent.com/ShawnMcCool/scry-2/main/installer/install.sh | shThe script resolves the latest release, downloads the Linux archive, verifies it against the published SHA-256 sum, and runs the bundled installer. The installer:
- copies the release to
~/.local/lib/scry_2 - installs and starts the systemd user service
scry-2 - enables lingering so the service keeps running after you log out
- adds a Scry 2 entry to your application menu that opens
http://localhost:6015
There is no tray icon on Linux. The service is controlled with systemd:
systemctl --user status scry-2
systemctl --user stop scry-2
systemctl --user start scry-2
journalctl --user -u scry-2 -fTo install a specific version: … | sh -s -- --version v0.20.0.
The first time you open the dashboard, a setup page checks that
Player.log was found and that events are arriving, and lets you set
the path by hand if detection failed.
- Download
Scry2-<version>.msifrom the Releases page. - Run it. It installs to
C:\Program Files\Scry2, adds Windows Firewall rules for the bundled Erlang runtime (epmd.exeanderl.exe), and registers the tray program to start on login. - The tray icon's menu has Open, Open Settings, Auto-start on login, and Quit. The tray starts and stops the backend and restarts it if it crashes.
In-app updates on Windows do not update the MSI install. Applying an
update installs the new version to %LOCALAPPDATA%\scry_2, points the
login autostart at it, and starts it from there; the copy in
C:\Program Files\Scry2 stays behind until you uninstall it from
Settings → Apps. Running a newer MSI later removes the
%LOCALAPPDATA% copy. This is a known defect of the experimental build.
The Windows build gets far less use than the Linux build. If something breaks, Operations → Report to developer opens a pre-filled GitHub issue with a scrubbed error log.
Not supported. There is nothing to install.
The uninstaller removes the program and its autostart entry. It does not delete your database or config.
| Platform | Command |
|---|---|
| Linux | ~/.local/lib/scry_2/uninstall |
| Windows, MSI install | Settings → Apps → Scry 2 → Uninstall |
| Windows, after an in-app update | %LOCALAPPDATA%\scry_2\uninstall.bat as well |
On Linux the uninstaller prints the database path and size, and the exact
rm -rf command that removes the database and config if you want them gone
too.
Everything Scry 2 records is in one SQLite database. You can copy, back up, inspect, or delete it.
| Platform | Database | Config |
|---|---|---|
| Linux | ~/.local/share/scry_2/scry_2.db |
~/.config/scry_2/config.toml |
| Windows | %APPDATA%\scry_2\scry_2.db |
%APPDATA%\scry_2\config.toml |
The config file is optional; the settings it holds are also editable in the
UI. Card images are cached next to the database under cache/.
Scry 2 never writes to any MTGA file. It reads Player.log, the MTGA card
database in your MTGA install, and (on Linux) the running MTGA process's
memory for the collection snapshot.
Scry 2 makes these outbound requests. None of them carry your game data.
| Destination | When | Purpose |
|---|---|---|
api.github.com |
Hourly | Check for a new release |
github.com |
When you apply an update | Download the release archive and checksum file |
api.scryfall.com |
On card refresh (scheduled; interval in Settings) | Scryfall bulk card data |
api.scryfall.com |
When a card image is first shown | Card images, then cached |
github.com/Badaro/MTGOFormatData |
Daily | Archetype definitions for deck labels |
mtgo.com/decklists |
Daily | Tournament decklists for NetDecks |
Report to developer opens a pre-filled GitHub issue in your browser. You see the contents before anything is submitted.
- Something parsed wrong or a page errored: Operations → Report to developer.
- Anything else: open an issue.
- Beleren by Delve Fonts — the MTG card-title typeface, commissioned by Wizards of the Coast. Used for headings. Proprietary; used under Wizards' Fan Content Policy.
- MPlantin — the MTG rules-text typeface. Used for card text. Proprietary to Wizards of the Coast.
- Mana and Keyrune by Andrew Gioia — mana, loyalty, and set symbols. SIL OFL 1.1 (fonts) and MIT (CSS).
- Scryfall — bulk card data and card images, used under their API terms. If you fork this project, keep within their rate limits.
- MTGOFormatData by Badaro — archetype definitions used to label decks.
- 17lands — the model for what a personal MTGA tracker should show.
- Wizards of the Coast — Magic: The Gathering, MTG Arena, mana and set symbols, and all card text and imagery are property of Wizards of the Coast LLC. Scry 2 is an independent, unofficial tool and is not affiliated with, endorsed, or sponsored by Wizards of the Coast. It exists under their Fan Content Policy.
MIT — see LICENSE. Third-party assets keep their own licenses as listed above.
To build from source or contribute, see DEVELOPMENT.md.