Skip to content
The CLI

The CLI

Every TUI action is also a command, which makes rommate easy to script over SSH or from other tools.

CommandWhat it does
rommateOpen the TUI.
rommate init --server URL --token rmm_… [--local-server URL] [--profile P] [--rom-dir DIR]Save the connection and folder settings after checking them.
rommate platformsList the server’s platforms and the folder each one maps to.
rommate roms <platform>List a platform’s games; ✓ marks the ones on this device. <platform> can be the RomM slug, the folder name or the id.
rommate search <term> [--limit N]Find games on every platform by name.
rommate pull <rom-id>…Download games by id, with their cover art.
rommate pull --platform <platform>Download every game of a platform you don’t have yet.
rommate remove <rom-id>…Delete downloaded games from the device.
rommate statusList what rommate has downloaded and flag files that went missing.
rommate coversDownload missing cover art for every downloaded game.
rommate savesShow the save state of every downloaded game. See Save sync.
rommate saves syncSync saves with RomM.
rommate saves resolve <rom-id> --keep local|serverSettle a save conflict.
rommate mappingsShow the platforms whose ES-DE folder differs from the RomM slug.
rommate configShow the effective configuration, including environment overrides, and whether it is complete. The token is never printed.
rommate gamepadList the controllers rommate can read and print each button press (Linux).
rommate versionPrint version, commit and build date.

Flags can go before or after arguments: rommate roms nes --json and rommate roms --json nes both work.

Examples

# What does the server have, and where will it go?
rommate platforms

# Download two games, then check
rommate pull 9 12
rommate status

# Fill up the Game Boy Advance folder
rommate pull --platform gba

pull is safe to repeat. Games that are already complete are skipped, and partial downloads continue where they stopped.

JSON output

Add --json to any command for machine-readable output. Lists come back as JSON arrays, and pull prints one event per line while it works:

{"event":"start","rom_id":9,"name":"Pokémon Omega Ruby","path":"/…/n3ds/omega.3ds","total":2147483648}
{"event":"progress","rom_id":9,"name":"Pokémon Omega Ruby","file":"omega.3ds","done":524288000,"total":2147483648}
{"event":"done","rom_id":9,"name":"Pokémon Omega Ruby","path":"/…/n3ds/omega.3ds","done":2147483648,"total":2147483648}
EventMeaning
startA download began; total is the size in bytes.
progressBytes so far, sent at most four times per second.
doneThe game is complete at path.
skippedThe game was already on the device.
errorThe download failed; error says why.

The exit code is non-zero when any download failed.

Last updated on