CLI client
The rawback CLI is a single self-contained binary — no Node, no Bun, nothing to install alongside it. This page takes you from a fresh terminal to photos landing in your library. Once you are there, the full CLI reference covers search, albums, sharing, camera control and JSON output for scripts.
On macOS, the Homebrew tap is the easiest route:
brew install --cask rawback-app/tap/rawbackOn Linux, or macOS without Homebrew, the installer picks the right build for your OS and CPU and verifies its checksum:
curl -fsSL https://raw.githubusercontent.com/rawback-app/cli/main/install.sh | shOn Windows, from PowerShell:
irm https://raw.githubusercontent.com/rawback-app/cli/main/install.ps1 | iexAdd the install directory to your PATH
The installers place rawback in ~/.local/bin ($HOME\.local\bin on Windows) and deliberately leave your shell startup files alone. If that directory is not already on your PATH, add it yourself — the installer prints a warning when it isn't.
Confirm the binary is there:
rawback --versionrawback authThis prints an approval link and opens it in your browser. Approve the request there and the terminal picks it up on its own — there is no token to copy back. The session is written to ~/.rawback/credentials.json and is the same one Rawback Desktop uses, so signing in here signs you in there.
Check it, and note the account slug on the profile line — the next step needs it:
rawback auth statusUploads travel over SFTP with their own credential, separate from your login. Create one:
rawback cred add --name "My laptop"The generated password is shown once. Copy it into ~/.rawback/config.yml together with your account slug:
sftp:
endpoint: sftp://ftp.rawback.app:23168
username: your-account-slug
password: 'the-generated-password'The file holds a password, so on macOS and Linux lock it down — uploads refuse to run if it is readable by anyone else:
chmod 600 ~/.rawback/config.ymlRead it back to confirm; the password shows as [REDACTED]:
rawback config viewPoint --path at a file or a directory. Directories are scanned recursively, so a memory card works the same way as a folder of exports: mount the card and give it the card's DCIM directory.
Look before you leap. photos check tells you what is already in your library, and --dry-run validates your config and quota, scans the input and estimates the transfer without opening a connection:
rawback photos check --path ~/Pictures/Export
rawback photos upload --path ~/Pictures/Export --dry-runThen send it:
rawback photos upload --path ~/Pictures/ExportFiles already in your library are skipped — the match is on filename plus EXIF capture time. On a fast connection you can raise the number of parallel transfers, anywhere from 1 to 16:
rawback photos upload --path /Volumes/EOS_DIGITAL/DCIM --concurrency 8Interrupting is safe
The first Ctrl-C stops queuing new files and lets the ones in flight finish; a second disconnects immediately. Either way, re-running the same command continues where it stopped.
rawback uploads
rawback photos listrawback uploads shows the batches Rawback has received and their status; rawback photos list shows the photos themselves. Add --json to either one to pipe the result somewhere else.
rawback --help, rawback photos upload --help.