{"id":20740649,"url":"https://github.com/strib/forgefs","last_synced_at":"2026-05-27T05:05:16.562Z","repository":{"id":65711935,"uuid":"594244073","full_name":"strib/forgefs","owner":"strib","description":"The Keyforge Filesystem","archived":false,"fork":false,"pushed_at":"2023-02-05T19:50:38.000Z","size":3682,"stargazers_count":1,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T11:56:50.439Z","etag":null,"topics":["ccg","filesystem","go","golang","keyforge","tcg"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/strib.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2023-01-28T00:00:05.000Z","updated_at":"2024-03-22T23:35:21.000Z","dependencies_parsed_at":"2023-02-19T01:45:49.790Z","dependency_job_id":null,"html_url":"https://github.com/strib/forgefs","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/strib/forgefs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strib%2Fforgefs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strib%2Fforgefs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strib%2Fforgefs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strib%2Fforgefs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/strib","download_url":"https://codeload.github.com/strib/forgefs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strib%2Fforgefs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28020012,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ccg","filesystem","go","golang","keyforge","tcg"],"created_at":"2024-11-17T06:29:29.516Z","updated_at":"2025-12-25T05:01:33.262Z","avatar_url":"https://github.com/strib.png","language":"Go","funding_links":["https://www.patreon.com/decksofkeyforge","https://www.patreon.com/SkyJedi"],"categories":[],"sub_categories":[],"readme":"[![Go Reference](https://pkg.go.dev/badge/github.com/strib/forgefs.svg)](https://pkg.go.dev/github.com/strib/forgefs) [![Go Report Card](https://goreportcard.com/badge/github.com/strib/forgefs)](https://goreportcard.com/report/github.com/strib/forgefs)\n\n# forgefs -- The Keyforge Filesystem\n\nFinally!  A filesystem that lets you browse all\n(Keyforge)[https://keyforging.com/) cards and all the decks you have\nregistered at [decksofkeyforge.com](https://decksofkeyforge.com).\nforgefs is a filesystem that runs on Ubuntu and MacOS that shows up\nlike a thumb drive, letting you browse both cards and decks from the\ncommand line or in your file broswer.\n\n## Usage\n\nHere is an example of browsing the filesystem on Linux.  In this\nexample, we show:\n\n1. Listing all Keyforge cards from the command line, then showing the\n   card data and image for one card.\n2. Doing the same thing, from the GUI file browser.\n3. Listing all your decksofkeyforge decks, then showing the deck data\n   for one of them.\n4. Generate a PDF of all the cards in the deck on the fly using a\n   standard Linux tool.\n\n![Using forgefs in Linux](https://user-images.githubusercontent.com/8516691/216798897-2cd8fd29-07cd-410f-bf80-7513facddf2c.gif)\n\nYou can also see a decklist image for any of your decks, courtesy of\nthe amazing [SkyJedi](https://github.com/SkyJedi/):\n\n![Seeing your deck image in Linux](https://user-images.githubusercontent.com/8516691/216798930-21879d31-3be4-40f8-a5a1-ccfc0c48343f.gif)\n\n### Filtering decks\n\nOne of the coolest things you can do is filter your decks by different\ndecksofkeyforge statistics, or by what houses or sets it has, right\nfrom the command line.\n\nAll you need to do is navigate into a _virtual directory_ in your\n`my-decks` directory. This isn't a real directory that will show up in\n`ls` or in your file browser listing; it only exists when you go into\nit or try to `ls` it directly.  Like magic!\n\nThe name for this virtual directory describes the kind of filter you\nwant.  There are a bunch of stats you can filter on, all calculated by\nthe awesome folks at\n[decksofkeyforge.com](https://decksofkeyforge.com).\n\n* `a`: amber control\n* `e`: expected amber\n* `r`: artifact control\n* `c`: creature control\n* `f`: efficiency\n* `d`: disruption\n* `sas`: overall SAS score\n* `aerc`: AERC score\n* `expansion` or `set`: the acronym of the Keyforge set of the deck.\n  These are case-insensitive:\n  * CotA\n  * AoA\n  * WC\n  * MM\n  * DT\n* `house`: matches one of the houses in the deck.  These are also\n  case-insensitive:\n  * Brobnar\n  * Dis\n  * Logos\n  * Mars\n  * Sanctum\n  * Saurian\n  * Shadows\n  * Staralliance\n  * Unfathomable\n  * Untamed\n\nYou can choose one of those stats, followed by an `=` and either the\nexact number you want to match, or a _range_.  Ranges are one or two\nnumbers combined with a `:`.  The minimum number goes to the left of\nthe `:`, and the maximum number goes to the right.  For example:\n\n* Amber control minimum of 10: `a=10:`\n* Creature control maximum of 5: `c=:5`\n* SAS between 80 and 90 (inclusive): `sas=80:90`\n\nWhat's more, you can combine these stat filters using boolean logic\nand parentheses. The possible boolean operators are:\n\n* And: `,` or `+`\n* Or: `^`\n\nExamples, assuming you have navigated into your `my-decks` directory:\n\n* Count all your decks with SAS between 80 and 90 (inclusive):\n  ![Filter on SAS](https://user-images.githubusercontent.com/8516691/216799191-ba5cc2b8-4b1c-47ac-9cf0-6d452dee5269.png)\n* Count your decks with \"perfect\" stats (amber control \u003e= 10, expected\n  amber \u003e= 20, creature control \u003e= 10, artifact control \u003e= 1.5, and\n  efficiency \u003e= 10):\n  ![Filter on perfect stats](https://user-images.githubusercontent.com/8516691/216799194-482ccc62-72be-4fa5-8ffe-5df552154658.png)\n* Count your decks with \"perfect\" stats _or_ a SAS of at least 80:\n  ![Filter on perfect stats or SAS of 80](https://user-images.githubusercontent.com/8516691/216799199-43c100fd-f013-40f4-8042-98453c68a61f.png)\n* Count your Mass Mutation decks with an AERC of at 68:\n  ![Filter on AERC and set](https://user-images.githubusercontent.com/8516691/216799202-c4c003a6-a149-4f29-901f-162d05c1c1e3.png)\n* Pick a random deck out of your MM decks with a SAS of at least 68:\n  ![Random deck](https://user-images.githubusercontent.com/8516691/216799204-9a43abec-b050-4a26-a756-5bc1377cf692.png)\n\nNote that the above examples are just counting directory entries\nusing a standard `wc` command line tool.  Each of those directory\nentries is a full deck directory, where you can access cards and\ndecklist images as well.  The only limit on what you can do with that\nis your imagination!\n\n## Build/Install\n\nforgefs is written in [Go](https://go.dev/).  Once you install and\nconfigure Go, it is super easy to install forgefs.  This will download\nthe repository and install it in your `$GOPATH/bin` directory:\n\n```sh\ngo get github.com/strib/forgefs\ngo install github.com/strib/forgefs/forgefs\n```\n\nAlternatively, you can find a pre-built package for Debian/Ubuntu\n[here](https://github.com/strib/forgefs/releases/).\n\n## Configuration/Run:\n\nThe forgefs config file lives by default at\n`$HOME/.forgefs_config.json` (though you can specify an alternate\nconfig file location on the command line to the `forgefs` binary).\nBefore you can run it, you need to generate a decksofkeyforge API key\nfor yourself; you can do that\n[here](https://decksofkeyforge.com/about/sellers-and-devs).  Once you\nhave your key, create a config file at `$HOME/.forgefs_config.json`\nthat looks something like this:\n\n```json\n  {\n    \"dok_api_key\": \"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"\n  }\n```\n\nwhere you need to substitute your real decksofkeyforge API key (in\nquotes) in place of \"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\".\n\nBy default, the mountpoint for forgefs is `$HOME/ffs`, though that is\nalso configurable on the command line or in the config file (with a\n\"mountpoint\" key).  That directory must exist and be empty before you\nrun forgefs.  forgefs also caches data on your file system, by default\nin directory `$HOME/.local/share/forgefs`.  You also need to make that\ndirectory.\n\n```sh\nmkdir -p $HOME/ffs\nmkdir -p $HOME/.local/share/forgefs/forgefs_images\n```\n\nAfter that, you're ready to run it!  You can run `forgefs` with no\ncommand line and starting browsing.\n\n### Debian/Ubuntu\n\nIf you've installed our `.deb` package, you can run it with the\n`run_forgefs` command, which starts up forgefs using `systemd` so it\nalways runs in the background.  It also creates the appropriate\ndirectories for you.\n\n## Credit\n\n* [decksofkeyforge.com](https://decksofkeyforge.com) is awesome,\n  consider supporting it on\n  [Patreon](https://www.patreon.com/decksofkeyforge).  It assigns a\n  bunch of statistics to your decks and is also a great deck\n  collection manager, in addition to other things.\n* SkyJedi is an amazing Keyforge community member, consider support\n  him as well on [Patreon](https://www.patreon.com/SkyJedi).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrib%2Fforgefs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstrib%2Fforgefs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstrib%2Fforgefs/lists"}