A collection tracker for Magic: The Gathering on the command line.
Data is stored as a single SQLite file on your machine. The cards are priced daily from MTGJSON and TCGCSV. Metadata and card information come from Scryfall.
Recorded from hoard demo a sample collection that ships with hoard, not a real one.
curl -sSfL https://tools.aithirne.com/hoard/install.sh | sh -s -- -b "$HOME/.local/bin"Make sure $HOME/.local/bin is on your path!
Or go install github.com/spiffcs/hoard/cmd/hoard@latest (Go 1.26+), or take an archive from the releases page.
Where that script comes from, and how to verify it
tools.aithirne.com is from the maintainer (see triage as well).
The script it serves is install.sh from this repository. The release workflow uploads that exact file. Please read it before running it if you're curious about the install process.
diff <(curl -sSfL https://tools.aithirne.com/hoard/install.sh) \
<(curl -sSfL https://raw.githubusercontent.com/spiffcs/hoard/main/install.sh)It downloads from this repository's releases and verifies the SHA-256. You can add -v to verify the Sigstore signature too if you have cosign. A trailing tag pins the version instead of taking the latest.
curl -sSfL https://tools.aithirne.com/hoard/install.sh | sh -s -- -v -b "$HOME/.local/bin" v0.1.0The macOS binaries are signed and notarized and should open without a Gatekeeper prompt; RELEASE.md covers verifying them.
hoard demohoard demo opens the browser on a small sample collection. This is a demo database of its own: your main hoard DB is never opened or clobbered, and hoard demo --reset starts the sample over.
Once you have cards of your own, hoard with no arguments opens the same browser on them. Inside it, / filters, : opens the command palette, and a starts the add flow.
hoard on its own opens the browser, and hoard help lists every command.
These are the ones worth knowing about first.
Getting cards in
| Command | |
|---|---|
add |
Add cards by name, link, or list |
import |
Add a collection CSV from another app, or from hoard |
deck |
Import, refresh and remove decks |
folder |
Group decks into folders |
binder |
Organize the loose collection into labelled parts |
move |
Move piped holdings into a binder |
Keeping it priced
| Command | |
|---|---|
update-prices |
Refresh prices (Scryfall updates daily) |
movers |
Biggest risers and sinkers you hold |
market |
Vendor prices vs TCGplayer's last-sold prices |
watch |
Check price watches (no network; exit 3 = fired) |
report |
Dated valuation: totals, binders, top holdings |
Getting data out
| Command | |
|---|---|
export |
Holdings as CSV or JSON, in hoard's format or theirs |
merge |
Fold another hoard database into this one |
schema |
The JSON Schema that this build's --json output follows |
Two more have sections of their own below: compendium builds a database of Magic you don't own, and demo opens the browser on a sample collection.
Most people arrive with an export from somewhere else. hoard import reads ManaBox, Moxfield and Delver Lens CSVs. It is also backwards compatible with hoard's own format. If you have some kind of format that's incompatible then please file an issue and I'll work with you to see how your case can be imported.
$ hoard import manabox-export.csv
✓ Imported 1,284 cards (manabox format): 1,284 rows resolved.Decks can be imported from an Archidekt URL, or from a pasted list:
$ hoard deck add https://archidekt.com/decks/1234567/my-deck
$ pbpaste | hoard deck add --file - --name "Modern Burn"Archidekt is the only site with a URL importer.1 Try exporting the deck to text and pipe it in: the plain 1 Sol Ring / 1x Sol Ring (C21) 125 shape that Moxfield, MTGGoldfish, TappedOut, EDHREC and Scryfall all export is read directly, foil markers (*F*) and SB: sideboard lines will be included.
Loose cards can go in one at a time by Scryfall link:
$ hoard add https://scryfall.com/card/uma/7/ulamog-the-infinite-gyre
✓ Added 1× Ulamog, the Infinite Gyre (uma/7) as nonfoil into Binder · $37.35--dry-run works on all three: resolve and report, write nothing. On an import, --preserve-binders recreates the file's own binders instead of putting everything in one.
Loose cards also have a full add flow in the TUI. Adding cards walks through typing a card in, and through building, pairing and scanning with the iPhone helper (experimental; it needs more attention before I try to publish it to the App Store).
The browser does not have to be pointed at cards you own. hoard compendium builds a database from a specified slice of Magic. That can be all Magic, go nuts. A handful of sets priced and backfilled with price data can help when building or pricing decks for a new format.
hoard compendium --rarity mythic,rare --since 2020 mythics-rare.db
hoard --db mythics-rare.dbTo build a whole format instead of a date range, hoard compendium --format premodern premodern.db does Premodern in one command. --format takes any format Scryfall records legality for, including legacy, modern, pauper and commander. Legality is recorded per card rather than per printing, so that build keeps later reprints of legal cards too, often the cheapest copy. Add --era for the period-correct set list instead. See the compendium docs for more.
| OS | Default location |
|---|---|
| macOS | ~/Library/Application Support/hoard/hoard.db |
| Linux | $XDG_DATA_HOME/hoard/hoard.db (else ~/.local/share/hoard/hoard.db) |
Override with --db PATH or $HOARD_DB. A schema upgrade backs the old file up alongside it first. The card catalog and price downloads live in your cache directory and are always safe to delete.
It is ordinary SQLite: read it with any tool, or take versioned JSON out with hoard export --format json (schema).
- Filtering: the query language behind / and
--filter - Recipes: wantlists, and moving cards in bulk
- Scripting:
--jsondocuments, and piping them throughjq - Adding cards: the TUI add flow and the iPhone scanner
- Compendiums: building a database of Magic you don't own
- Updating: how hoard tells you about a new release
- CHANGELOG
Project documents: CONTRIBUTING · AGENTS · RELEASE · SECURITY · CODE_OF_CONDUCT
hoard is free and MIT licensed, and it stays that way. If it saved you a spreadsheet, you can buy me a coffee. It keeps the macOS builds signed and notarized and the install script hosted.
Code is MIT, © 2026 Christopher Phillips. Card imagery in this repository remains the property of Wizards of the Coast and is not covered by that license; see NOTICE.
hoard is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards. Portions of the materials used are property of Wizards of the Coast. ©Wizards of the Coast LLC.
Card data courtesy of Scryfall, MTGJSON (MIT, © 2018–Present Zach Halpern) and TCGCSV. hoard is not affiliated with, endorsed by, or sponsored by any of them. All prices are daily estimates from third-party aggregators, not quotes, with absolutely no guarantee. Visit and support your LGS for final prices.
Footnotes
-
Moxfield's API is behind Cloudflare, and most others have none. ↩


