RoMix V.1.1
Reference

CLI Reference (Experimental)

Standalone command-line automation for mixing and uploading without the GUI.

Experimental. The CLI (pipeline_runner.py) is a standalone automation entry point, separate from the GUI, and has not received the same level of testing. Use with caution, especially in unattended/scheduled contexts — review output logs after each run, and avoid pointing it at your only copy of source audio until you've validated it against your specific files.

What it does

pipeline_runner.py combines the mix and upload steps into a single command-line invocation, without opening the CustomTkinter GUI. It runs synchronously (blocking) — invoke it, it runs to completion, and it produces a report at the end. There's no live progress UI; all status is written to logs/console output and the same local data files the GUI uses (upload_history.json, pending_moderation.json).

When to use it

Intended for automation contexts where a GUI isn't practical or available:

  • Windows Task Scheduler
  • cron jobs (Linux/macOS, if you're running the pipeline in that environment)
  • CI/CD pipelines

If you're uploading audio interactively and want to see progress, mixing controls, and moderation status live, use the GUI quickstart instead — the CLI is purpose-built for unattended runs, not day-to-day use.

Basic usage

python src/pipeline_runner.py --help

This page is a starting point. Full flag-by-flag documentation (input folder, mix parameters, credentials source, output/report format) will be filled in as the CLI stabilizes. If you're scripting against it today, treat the --help output as the source of truth over this page.

Credentials in automated contexts

The CLI reads credentials the same way the GUI does — via the OS keychain if available, falling back to the plaintext JSON store. In a scheduled/automated context (e.g. a service account running Task Scheduler), confirm the keychain is actually accessible to the account executing the job; if it isn't, the CLI will fall back to plaintext storage, which has different security implications than interactive use. See Credential Storage.

Known limitations

  • No live progress reporting — you won't see per-file status until the run completes (or you tail the log).
  • Same moderation-halt behavior as the GUI: if Roblox rejects an asset, the queue stops. In an unattended run, this means the job ends early and won't retry automatically — check the report/logs after each scheduled run rather than assuming success.

On this page