Prerequisites

  • BeatOps desktop app installed and running

The CLI (beatops) is included with the desktop app - no extra installation needed.

Verify it works:

beatops --help

Getting Started

Make sure the BeatOps desktop app is running. The CLI connects to it automatically on localhost:7410.

List your beats:

beatops list

Show details for a specific beat:

beatops show "beat name"

Check which platforms are connected:

beatops status

Commands

list

List all beats in your library.

beatops list [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops list
beatops list --format json

show

Show detailed information about a specific beat.

beatops show <name> [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops show "Midnight"

analyze

Analyze a beat's audio to detect BPM, key, genre, and mood.

beatops analyze <name> [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops analyze "Midnight"

status

Check the connection status of all platforms (YouTube, SoundCloud).

beatops status [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops status

config get

Show all current configuration values.

beatops config get [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops config get

config set

Set a configuration value.

beatops config set <key> <value>

Available keys:

  • beats_folder - Path to your beats folder
  • default_template_set - Default template set name

Example:

beatops config set beats_folder "/path/to/beats"

connect

Connect a platform account via OAuth.

beatops connect <platform> [--shorts] [--yes] [--format json]

Flags:

  • --shorts - Connect YouTube Shorts account
  • --yes - Skip confirmation prompts
  • --format json - Output as JSON

Example:

beatops connect youtube
beatops connect soundcloud
beatops connect youtube --shorts

scan

Scan a folder for beats and import them into BeatOps.

beatops scan [<path>] [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops scan
beatops scan "/path/to/new-beats"

check

Pre-validate a beat before uploading. Checks that all required metadata, images, and platform connections are in place.

beatops check <name> [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops check "Midnight"

upload

Upload a beat to one or more platforms.

beatops upload <name> --to <platforms> [--dry-run] [--yes] [--format json]

Flags:

  • --to - Target platforms (youtube, soundcloud)
  • --dry-run - Preview without uploading
  • --yes - Skip confirmation prompts
  • --format json - Output as JSON

Example:

beatops upload "Midnight" --to youtube soundcloud
beatops upload "Midnight" --to youtube --dry-run

pipeline

Run the full pipeline: analyze audio, generate images and video, then upload.

beatops pipeline <name> --to <platforms> [--dry-run] [--yes] [--format json]

Flags:

  • --to - Target platforms (youtube, soundcloud)
  • --dry-run - Preview without uploading
  • --yes - Skip confirmation prompts
  • --format json - Output as JSON

Example:

beatops pipeline "Midnight" --to youtube soundcloud --yes

batch

Batch process multiple beats at once.

beatops batch [<names>...] --to <platforms> [--all] [--upload-only] [--yes] [--format json]

Flags:

  • --to - Target platforms (youtube, soundcloud)
  • --all - Process all unuploaded beats
  • --upload-only - Skip analysis and generation, upload only
  • --yes - Skip confirmation prompts
  • --format json - Output as JSON

Example:

beatops batch "Midnight" "Sunrise" --to youtube --yes
beatops batch --all --to youtube soundcloud --yes

analytics

View analytics for a beat (views, likes, comments across platforms).

beatops analytics <name> [--format json]

Flags:

  • --format json - Output as JSON

Example:

beatops analytics "Midnight"

JSON Output for Scripting

All commands support --format json for machine-readable output. Data goes to stdout and errors go to stderr, so you can pipe output safely.

beatops list --format json | jq '.[] | .name'
beatops show "Midnight" --format json | jq '.bpm'

This makes it easy to integrate BeatOps into shell scripts, CI pipelines, or any automation workflow.

Troubleshooting

Connection refused

If you see a "connection refused" error, make sure the BeatOps desktop app is running. The CLI connects to the app's local API on port 7410.

Command not found

If beatops is not recognized after installation:

  • Make sure the BeatOps desktop app is installed
  • Check that the app's CLI directory is in your system PATH
  • Try restarting the desktop app