The tmc CLI - The Modding Community
The API, From Your Terminal
tmc is a command-line client for our public content API. It creates, edits and deletes your assets, mods, servers, articles, communities, collections and groups — and, because that is what the API is actually used for, it uploads files and cuts releases in one command.
tmc is not released yet. It is not on PyPI and has no public repository — today it installs from a source checkout, and this page describes what the tool already does rather than announcing a launch.
# From the source checkout — there is nothing to build
pip install .
pip install '.[fast]' # optional: cryptography, for faster signing
tmc --version # tmc 1.1.0
# Keys are made under Account → API Keys
tmc auth login --token tmc_xxxxxxxxxxxx
tmc auth whoami
# …or read public items with no key at all
tmc mod list --anon --app 4 -o json
A single standard-library package, so there is nothing to build and nothing to resolve — and every command, flag and exit code is written up in the docs.
The Reason To Have A Tool At All
Cutting a release through the raw API is four requests in a particular order: upload the files, collect their ids, read the release set that already exists, then write the new one back without disturbing the others. release publish is that sequence.
Everything The API Does, Spelled Out
One command per thing you would do in the browser, and a few you would not want to — bulk edits, pipelines and scripted releases.
Keys, Profiles And The Public Half
Log in once and the credential is stored in ~/.config/tmc/config.json at mode 0600 — or hand it over in the environment and nothing touches disk at all. One profile per site or per key, and --anon for the half of the API that needs no key in the first place.
Four Verbs That Say What They Do
The dangerous one is set: on this API a PUT to a relation means "this is now the complete set", so a one-member PUT deletes everything else on the item. The CLI keeps the four apart and warns before it sends the destructive one.
Made To Live In CI
Build your project, cut a release and upload its files on every tag. Credentials come from the environment, so nothing is written to disk on a runner.