Skip to content

Add a Docker channel for the relay + cli media matrix#7

Merged
kixelated merged 1 commit into
mainfrom
docker-media
Jun 4, 2026
Merged

Add a Docker channel for the relay + cli media matrix#7
kixelated merged 1 commit into
mainfrom
docker-media

Conversation

@kixelated
Copy link
Copy Markdown
Contributor

Why

Docker Hub publishes moqdev/moq-relay and moqdev/moq-cli — a first-class install channel (documented as docker pull moqdev/… in their READMEs) — but the media matrix only ever ran the cargo/brew/apt/nix binaries. This adds Docker as a fifth channel. (Complements the rust-docker token cell already on main.)

What

smoke.sh is unchanged. The docker channel just points RELAY_BIN/MOQ_BIN at two wrapper scripts in clients/docker/ that docker run --network host the published images:

  • clients/docker/moq-relay — bind-mounts the config dir, host networking so the relay binds the ports the orchestrator (curl 127.0.0.1) and the cli containers reach.
  • clients/docker/moq-cli — host networking + -i so the publisher can pipe ffmpeg's Annex-B to moq publish over stdin.

Because host networking makes the containerised relay bind the host's 127.0.0.1, the committed smoke.toml works unchanged. And since the other language clients (python/go/swift/kotlin/c/js/gst) still install from their own registries, this run also proves the Docker relay routes between every implementation, and the Docker moq-cli publishes/subscribes against them.

  • CI: a new ubuntu-latest / docker matrix cell pulls both images :latest and sets the wrappers. Linux-only--network host needs a native Docker daemon, which GitHub's macOS runners (and Docker Desktop / podman-machine VMs) don't provide.
  • Freshness: asserts the images stay unpinned (:latest) and CI pulls them fresh.
  • Overrides: SMOKE_DOCKER=podman, MOQ_RELAY_IMAGE, MOQ_CLI_IMAGE.

Validation

Verified locally with podman: the moqdev/moq-relay container routes a host-ffmpeg | moqdev/moq-cli publish publisher to a moqdev/moq-cli subscribe subscriber end-to-end — a frame's bytes arrive (n=1), the same bar as every other cell. (The host-orchestrator readiness poll can't reach a podman-VM container on macOS, so the full smoke.sh integration is validated by the Linux CI cell; the image interop above is the substantive part.)

shellcheck (wrappers) + shfmt + actionlint clean; freshness passes.

🤖 Generated with Claude Code

Docker Hub (moqdev/moq-relay, moqdev/moq-cli) is a published install
channel for the relay and CLI, but the media matrix only ever ran the
cargo/brew/apt/nix binaries. Add a `docker` channel: smoke.sh stays as-is
and points RELAY_BIN/MOQ_BIN at two wrapper scripts (clients/docker/) that
`docker run --network host` the published images. Host networking lets the
containerised relay bind the ports the orchestrator and the cli containers
reach on 127.0.0.1, so the committed smoke.toml works unchanged -- and
since the other language clients still install from their own registries,
the run also proves the Docker relay routes between every implementation.

Linux-only (--network host needs a native daemon; GitHub's macOS runners
have none). Runtime is overridable (SMOKE_DOCKER=podman), as are the images
(MOQ_RELAY_IMAGE / MOQ_CLI_IMAGE). CI adds an ubuntu `docker` matrix cell
that pulls both images :latest and sets the wrappers; freshness asserts the
images stay unpinned + pulled fresh.

Verified locally with podman: the moqdev/moq-relay container routes a
host-ffmpeg | moqdev/moq-cli publisher to a moqdev/moq-cli subscriber
end-to-end (a frame's bytes arrive).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 4, 2026

Warning

Review limit reached

@kixelated, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 31 minutes and 24 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4a3f3b51-2e6f-467e-be79-ef9036d97f8d

📥 Commits

Reviewing files that changed from the base of the PR and between 10e3cbd and 6dc92f5.

📒 Files selected for processing (5)
  • .github/workflows/smoke.yml
  • README.md
  • clients/docker/moq-cli
  • clients/docker/moq-relay
  • freshness.sh
✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch docker-media

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@kixelated kixelated merged commit 6e89755 into main Jun 4, 2026
0 of 7 checks passed
@kixelated kixelated deleted the docker-media branch June 4, 2026 03:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant