Skip to main content

rgba CLI

HTTPS client for the deployed RGBA API, plus a literal local Remotion wrapper. The API defaults to the right backend URL; override with RGBA_API_URL for local dev. RGBA provides a UI and tools for external agents; it does not run its own agent. For disposable Kubernetes/Modal agent containers, see the production runtime.

Install

pip install rgba             # from PyPI
pipx install rgba            # isolated user install (recommended for daily use)

After install you'll have a rgba command on your PATH.

Usage

rgba auth login              # device-flow → opens https://rgba.ai/cli in your browser
rgba auth status             # show whoami
rgba auth logout             # revoke the active token
rgba install skill           # canonical skill in .agent/.agents/.claude skills directories
rgba auth worker-token --label JOB --output /secure/job.json # controller: one expiring credential per job

rgba me                      # alias for `auth status`
rgba actions                 # discover every /sdk/action with cost + params
rgba actions <name>          # full schema for one action
rgba actions <action> -p key=val # call /sdk/action (`rgba sdk` is a legacy alias)
rgba jobs get <job_id>       # poll a job
rgba jobs wait <job_id>      # poll until status is completed/failed
rgba actions social-publish -p operation=channels # connected social accounts
rgba actions social-publish --params-file publish.json # draft/post/schedule video

Credentials live in ~/.rgba/credentials (mode 0600). The CLI never sees your Supabase password — auth is brokered through a device flow against the RGBA backend. Containers use RGBA_CREDENTIALS_FILE (read-only secret) or RGBA_CREDENTIALS_JSON. Use independent worker tokens for concurrent jobs; never share a rotating device-login credential across them. All product writes use ownership-checked RGBA APIs, not a Supabase service key.

Author and render explainers

First read rgba prompts animation/guide. This self-contained prompt includes the relevant codex-explainer instructions; no additional skill is needed. The same coding agent writes real React/Remotion source and iterates on rendered review. RGBA runs the project's installed Remotion CLI and records its workspace; it does not turn the story into a restricted scene format or rewrite the animation. The following local commands require no RGBA login:

rgba prompts animation/guide  # read the complete authoring instructions
rgba explainer scaffold /path/to/new-film --version 4.0.529

rgba remotion --project-dir /path/to/film studio src/index.ts --no-open
rgba remotion --project-dir /path/to/film still src/index.ts Film /tmp/frame.png --frame=120
rgba remotion --project-dir /path/to/film render src/index.ts Film /tmp/film.mp4
rgba remotion --project-dir /path/to/film --help

Only an initial --project-dir DIR or --project-dir=DIR belongs to RGBA. Every following argument is passed unchanged, including unknown/future flags, help, props, browser, bundle, render and Studio commands. An initial -- ends wrapper option parsing explicitly. The wrapper uses no shell, inherits the native environment and terminal streams, and preserves exit status and signals. It uses the installed project dependency rather than silently downloading a different Remotion version. scaffold invokes upstream create-video's blank template in a new or empty directory; the coding agent then authors the film.

Inspect the actual entrypoint and registered compositions:

rgba explainer inspect --project-dir /path/to/film --entry-point src/index.ts \
  --studio-url http://localhost:3417 --output /tmp/film-project.json

The JSON is the project value for explainer-video register/update operations. It includes exact CLI composition metadata, installed package versions, a file manifest with SHA-256 hashes, and a source revision. The revision is SHA-256 of canonical JSON (sort_keys, compact separators, ASCII escaping) containing entrypoint, files, package_versions and compositions. Paths and optional Studio URLs are separate from source identity. Inspect passes additional flags to native composition discovery, so --props and browser configuration work.

Inspection includes public assets and excludes dependency caches, build/output folders and credential files. It rejects source directory symlinks instead of silently omitting their contents, and rejects changes made during inspection. Write snapshots outside the workspace to avoid hashing the snapshot itself. The optional Studio address must use localhost, 127.0.0.1 or ::1 and does not start a server. Composition metadata is captured from the installed CLI's actual discovery result; an unsupported future metadata-adapter layout fails clearly while rgba remotion remains available unchanged.

CPU work in one sandbox or container

Keep Remotion/Chromium rendering, FFmpeg audio processing and clip assembly in the same environment as the installed CLI. The Python wheel does not itself install Node.js, browsers, FFmpeg, fonts or project npm dependencies. Check those tools before rendering:

rgba runtime doctor --project-dir /path/to/film --json
rgba media stitch first.mp4 second.mp4 --output joined.mp4 \
  --width 1920 --height 1080 --fps 30

These commands need no login or API connection. Local stitching normalizes clips with FFmpeg, retains their first audio track and pads missing audio with silence. It supports ordered MP4 assembly; it does not reproduce the hosted editor's timeline effects. rgba actions stitch-video continues to submit a remote API job, so use rgba media stitch for the local CPU workflow.

The container runtime packages the installed wheel, Node, Remotion, Chromium, FFmpeg and fonts. Its smoke test renders animation and sound, then stitches clips with networking disabled. Install/fetch dependencies and assets during setup; account/storage APIs and GPU provider services can remain remote. No secondary CPU render container is required.

Publish videos

Video publishing supports YouTube, Instagram, TikTok, Facebook, Threads, and Pinterest through Postiz (Pinterest also needs a cover_url image per target). promote-video posts link promotions to X, Reddit, and Medium. In RGBA, open Settings → Connect Postiz, save your Postiz workspace API key, and connect your social accounts. Multiple channels are supported. The key stays on the server; do not pass it to the CLI.

Run rgba actions social-publish -p operation=channels to find channel IDs. For a YouTube draft, save this as publish.json with your channel ID and a public HTTPS video file URL:

{
  "operation": "publish",
  "request_id": "my-video-001",
  "video_url": "https://your-cdn.example/video.mp4",
  "mode": "draft",
  "targets": [{
    "channel_id": "YOUR_CHANNEL_ID",
    "content": "My video description",
    "settings": {"title": "My video", "type": "private", "selfDeclaredMadeForKids": "no"}
  }]
}

Then run rgba actions social-publish --params-file publish.json. Local files can first use rgba actions upload -p file_path=/path/video.mp4; use the returned URL. An owned RGBA video's video_id can replace video_url. Publishing defaults to a draft; use mode=now or mode=schedule with a timezone-aware publish_at for authorized automation. Reuse the same request_id and parameters on retries to avoid duplicate submissions. An accepted receipt means Postiz accepted the submission; use operation=posts with start_date and end_date to check delivery. Run rgba actions social-publish for the full action schema.

Environment

var default use
RGBA_API_URL https://lemontree-media-llc--rgba-api.modal.run Override the API origin (e.g. localhost)
RGBA_CONFIG_DIR ~/.rgba Override credentials directory

Metadata

Release files for rgba 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rgba 0.4.0
File Size Uploaded Provenance
rgba-0.4.0.tar.gz 198.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for rgba 0.4.0
File Interpreter ABI Platform
rgba-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 405.1 kB

Release files / rgba-0.4.0.tar.gz

Download URL rgba-0.4.0.tar.gz
Size 198.5 kB
Tags Source
SHA-256 checksum
How to use checksums
bf425f04d7c9c4fd5d4fc92497b53086c01a33ed2e9782459a248a4f0d99a5b9
BLAKE2b-256 checksum
How to use checksums
6e1f4acf045fcd41024af3f854acb87d8f63d55667a7ee873f8af2f77b47c4cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / rgba-0.4.0-py3-none-any.whl

Download URL rgba-0.4.0-py3-none-any.whl
Size 206.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ea3b6454b88e3357051c3a4caf1ecc8a0d89df0c6581353b0cf7564d16e5c556
BLAKE2b-256 checksum
How to use checksums
a67074e4c68f238f23b11d806686a9d4b151193a58497494bec16be0d03c24ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Security for rgba 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page