Skip to content

Publish images for arm64 too; model server defaults to :edge - #110

Merged
architsharm merged 1 commit into
mainfrom
claude/multiarch-images
Oct 15, 2026
Merged

architsharm merged 1 commit into
mainfrom
claude/multiarch-images

Conversation

@architsharm

Copy link
Copy Markdown
Owner

Why

Setting up the model server on a Graviton (arm64) EC2 instance failed in two ways:

  • docker compose pull failed with no matching manifest for linux/arm64. Images were built for amd64 only.
  • The guide pointed at :latest, which moves only on v* tags. It was still v0.4.0 (Oct 12), from before agentfox serve models existed.

What

  • publish-images.yml: builds each image (gateway, dashboard) per architecture on a native runner (ubuntu-24.04-arm, free for public repos). It boot-checks the gateway on its own architecture and pushes by digest. Then one manifest job per image publishes a single multi-arch tag set and fails unless both linux/amd64 and linux/arm64 are in it.
  • New sha-<commit> tag on every publish, so a machine can pin exactly what it tested.
  • arm64 uses its own GHA cache scope; amd64 keeps the default scope, which is shared with ci.yml's docker-smoke.
  • Model server: .env.example and compose default to :edge, with how to pin a sha- or release tag. The guide adds Graviton sizing (c7g.large), a 30 GB disk minimum, the docker group step, and a note not to share the token.

Verified

  • actionlint is clean.
  • The arm64 deps stage was built natively on Apple Silicon: aarch64, torch 2.14.1+cpu, and agentfox serve models --help works.
  • The full multi-arch publish runs only on main or tags, so the first real run is this PR's merge. The manifest job asserts both platforms, so a missing architecture fails loudly rather than shipping amd64-only.

After merge

ghcr.io/architsharm/agentfox/gateway:edge will be pullable on arm64. Consider cutting a release (e.g. v0.5.0) so :latest also includes the model server.

🤖 Generated with Claude Code

A model server on a Graviton instance could not pull the gateway image ("no
matching manifest for linux/arm64"): images were built for amd64 only. And
the guide's `:latest` moves only on release tags, so it was v0.4.0, from
before `agentfox serve models` existed.

- publish-images builds each image per architecture on a native runner
  (ubuntu-24.04-arm for arm64, free for public repos), boot-checks the
  gateway on its own architecture, pushes by digest, then one job per image
  publishes a single multi-arch tag set and asserts both platforms are in it.
  Also publishes `sha-<commit>` for every push, so a machine can pin exactly
  what it tested.
- The model server defaults to `:edge` and says how to pin a sha- or release
  tag; the guide covers Graviton sizing, disk, docker group, and not sharing
  the token.

Verified the arm64 `deps` stage natively: aarch64, torch 2.14.1+cpu, and
`agentfox serve models` present.

Co-Authored-By: Claude <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
guardrails-api Ready Ready Preview Oct 15, 2026 10:16am UTC
guardrails-dashboard Ready Ready Preview Oct 15, 2026 10:16am UTC
guardrails-redteam-lang Ready Ready Preview Oct 15, 2026 10:16am UTC

This branch was successfully deployed

3 active deployments
Preview – guardrails-api — d852d029 Deployed Oct 15, 2026 by vercel[bot]
Preview – guardrails-redteam-lang — d852d029 Deployed Oct 15, 2026 by vercel[bot]
Preview – guardrails-dashboard — d852d029 Deployed Oct 15, 2026 by vercel[bot]
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