Conversation
Every customer bot image is built FROM dailyco/pipecat-base, so an arm64-only base means an amd64 customer cannot produce a runnable bot at all - and that applies to any framework user on amd64 hardware, not just on-prem regions. The runner is amd64, so the added leg is native and buildx builds both in parallel; the emulated arm64 build was already being paid for here. SBOM generation moves to BuildKit's per-platform attestations, since scanning the pushed index afterwards would describe only whichever platform resolved. A guard after the push asserts the index really contains both platforms.
cbrianhill
approved these changes
Aug 11, 2026
The comment claimed the runner was amd64 and that arm64 was the emulated leg. It is the other way round - runs-on is ubuntu-24.04-arm, so arm64 is native and amd64 is the leg being added. Note the measured cost while here: both platforms build in ~2 minutes, because nothing in this image is compiled from source and the only emulated work is the apt install. Unlike the operator, there is nothing to gain from a $BUILDPLATFORM cross-compile here. PCC-1081
markbackman
approved these changes
Aug 11, 2026
| platforms: linux/arm64 | ||
| # Every customer bot is built FROM this image, so an arm64-only base | ||
| # means an amd64 customer cannot produce a runnable bot at all | ||
| # (PCC-1081). This runner is arm64, so arm64 is the native leg and |
Contributor
There was a problem hiding this comment.
Remove the Linear task number from the comment?
Suggested change
| # (PCC-1081). This runner is arm64, so arm64 is the native leg and | |
| # . This runner is arm64, so arm64 is the native leg and |
Contributor
Author
There was a problem hiding this comment.
Done in 904b6de — reflowed the sentence rather than applying the suggestion verbatim, since that would have left a stray # . opening the line.
Flagging one thing rather than deciding it: this repo is public and already carries several of these in pipecat-base — PCC-989, PCC-1038, PCC-1066 (a couple in docstrings). So this change departs from the existing convention rather than restoring it. Happy either way; if the intent is that internal IDs stay out of a public repo, those are the other instances.
Review nit on #103: keep the internal Linear reference out of the comment. Reflowed rather than applying the suggestion verbatim, which would have left a stray "# ." at the start of the sentence. Note this repo is public and already carries several PCC-NNNN references in pipecat-base (PCC-989, PCC-1038, PCC-1066), so this departs from the existing convention rather than restoring it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Every customer bot image is built
FROM dailyco/pipecat-base:<version>, and this image is publishedlinux/arm64only. So an amd64 customer cannot produce a runnable bot at all — and that applies to any framework user on amd64 hardware, not only on-prem regions. Part of PCC-1081.Arguably the sharper of the two arm64-only images, since it is customer-facing and affects people who have nothing to do with Pipecat Cloud.
The change
platforms: linux/amd64,linux/arm64, and this is the cheap direction. The runner is amd64, so the added leg is the native one; the emulated arm64 build is already being paid for today. Buildx builds platforms in parallel, so wall-clock barely moves — the ticket's open question about QEMU cost for a Python image is largely moot, because we are not adding the emulated side.Worth noting there is no
setup-qemustep here and never was:docker/setup-buildx-actionuses thedocker-containerdriver, whose BuildKit image ships the QEMU emulators. That is why arm64 already builds.sbom: trueswitches SBOM generation to BuildKit's per-platform attestations, attached to the index as referring artifacts. Anything scanning the pushed digest afterwards sees the index and describes only whichever single platform it resolves.Regression guard
A step after the push asserts the index really contains both platforms, so a single-arch base cannot land again silently. It filters
unknown/unknownentries, which is necessary precisely because SBOM attestations add non-platform manifests to the index. Skipped on pull requests, where nothing is pushed.Note on existing tags
Tags published before this stay single-arch —
latestincluded, until the next build. Worth deciding whether any published version needs backfilling or whether multi-arch simply starts here.Related
daily-co/pipecat-cloud-operator#244does the same for the operator image. Both are needed for the ticket's acceptance: an on-prem region running a session on an amd64 node pool.