Skip to main content

Documentation Index

Fetch the complete documentation index at: https://rendobar.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Three rules for any CI: pin the CLI version, authenticate from a secret, pick an output mode you can parse.

GitHub Actions

.github/workflows/render.yml
name: render
on: [push]

jobs:
  render:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Rendobar CLI
        run: |
          curl -fsSL https://rendobar.com/install.sh | sh
          echo "$HOME/.rendobar/bin" >> "$GITHUB_PATH"
        env:
          RENDOBAR_VERSION: v1.0.0

      - name: Render
        run: rb ffmpeg -i ./input.mp4 -c:v libx264 -crf 23 out.mp4
        env:
          RENDOBAR_API_KEY: ${{ secrets.RENDOBAR_API_KEY }}

      - uses: actions/upload-artifact@v4
        with:
          name: rendered
          path: out.mp4
install.sh writes the PATH update to shell rc files, which Actions steps don’t read. The echo … >> "$GITHUB_PATH" line propagates the install dir to following steps. The default GITHUB_TOKEN is auto-picked-up by the installer to lift the GitHub Releases rate limit.

GitLab CI

.gitlab-ci.yml
render:
  image: ubuntu:24.04
  variables:
    RENDOBAR_VERSION: v1.0.0
  before_script:
    - apt-get update && apt-get install -y curl ca-certificates
    - curl -fsSL https://rendobar.com/install.sh | sh
    - export PATH="$HOME/.rendobar/bin:$PATH"
  script:
    - rb ffmpeg -i ./input.mp4 -c:v libx264 -crf 23 out.mp4
  artifacts:
    paths:
      - out.mp4
Set RENDOBAR_API_KEY as a masked, protected CI/CD variable in project settings.

Docker

Multi-stage to keep the final image small:
Dockerfile
FROM ubuntu:24.04 AS cli
RUN apt-get update && apt-get install -y --no-install-recommends \
      curl ca-certificates && rm -rf /var/lib/apt/lists/*
ENV RENDOBAR_VERSION=v1.0.0
ENV RENDOBAR_INSTALL_DIR=/usr/local/bin
ENV RENDOBAR_NO_MODIFY_PATH=1
RUN curl -fsSL https://rendobar.com/install.sh | sh

FROM ubuntu:24.04
RUN apt-get update && apt-get install -y --no-install-recommends \
      ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=cli /usr/local/bin/rb /usr/local/bin/rb
ENTRYPOINT ["rb"]
RENDOBAR_NO_MODIFY_PATH=1 skips the rc-file writes; pointless inside a Docker layer.
docker run --rm -v $(pwd):/work -w /work \
  -e RENDOBAR_API_KEY=$RENDOBAR_API_KEY \
  rb-image ffmpeg -i input.mp4 -c:v libx264 -crf 23 out.mp4

Authenticate from a secret

RENDOBAR_API_KEY is the only auth path for CI. It beats any saved credential and writes nothing to disk. Don’t run rb login in CI — the browser flow will hang.
export RENDOBAR_API_KEY=rb_live_xxx
rb whoami      # confirm before running anything else

Output modes for parsing

Progress display goes to stderr. stdout stays empty unless you ask for it.
GoalFlagstdout
Result URL only--url-onlyOne line, the signed download URL
Full result--jsonJSON: id, status, outputUrl, cost, timing
Exit code only--quiet(nothing)
Submit and exit--no-waitOne line, the job ID
# Pipe URL to wget
URL=$(rb ffmpeg --url-only -i in.mp4 -c:v libx264 out.mp4)
wget "$URL" -O out.mp4

# Parse with jq
rb ffmpeg --json -i in.mp4 -c:v libx264 out.mp4 \
  | jq -r '"job=\(.id) cost=\(.cost.formatted)"'

# Fire-and-forget
JOB_ID=$(rb ffmpeg --no-wait -i in.mp4 -c:v libx264 out.mp4)
echo "submitted $JOB_ID"

# Boolean assertion
if rb ffmpeg --quiet -i in.mp4 -c:v libx264 out.mp4; then
  echo "render passed"
fi

Verify build provenance

For supply-chain-strict pipelines, verify the binary was built by the official rendobar/cli workflow:
curl -fsSL -o rb.tar.gz \
  https://github.com/rendobar/cli/releases/download/v1.0.0/rb-linux-x64.tar.gz
gh attestation verify rb.tar.gz --repo rendobar/cli
tar -xzf rb.tar.gz
sudo mv rb /usr/local/bin/rb

Idempotency

The CLI does not expose --idempotency-key. If a retried CI step shouldn’t double-charge, submit via the SDK or POST /jobs directly with an idempotencyKey field.

See also