| name | find-docker-image |
| description | Find existing Docker image tags on GHCR for Hyperlane agent, monorepo, or node service images. Use when the user wants to find a recent image, look up an image for a branch or commit, or check what's currently deployed. |
Find Docker Images
Find existing Hyperlane Docker images on GHCR (ghcr.io/hyperlane-xyz/*).
Image Repositories
| Image | Contents |
|---|
hyperlane-agent | Rust relayer, validator, scraper |
hyperlane-monorepo | Full TS/Solidity monorepo |
hyperlane-node-services | All TS node services (rebalancer, warp-monitor, ccip-server, keyfunder, relayer) |
The hyperlane-node-services image is a unified image. Set SERVICE_NAME env var at runtime to select which service to run.
Tag Format
- Commit tags:
<7-char-sha>-<YYYYMMDD>-<HHMMSS> (e.g. c558a9f-20260304-105241) — immutable, used in production
- Branch tags:
main, my-feature-branch — mutable, overwritten on each build
- PR tags:
pr-123 — ephemeral, cleaned up after 1 week
How to Find Images
Latest image for a branch
Use the mutable branch tag directly:
ghcr.io/hyperlane-xyz/hyperlane-agent:main
List all tags for an image
Query the OCI registry API (no auth needed for public images):
TOKEN=$(curl -s "https://ghcr.io/token?service=ghcr.io&scope=repository:hyperlane-xyz/<IMAGE>:pull" | jq -r .token)
curl -s -H "Authorization: Bearer $TOKEN" "https://ghcr.io/v2/hyperlane-xyz/<IMAGE>/tags/list" | jq '.tags'
Replace <IMAGE> with the image name (e.g. hyperlane-agent).
Find tag for a specific commit
Grep the tag list for a sha prefix:
TOKEN=$(curl -s "https://ghcr.io/token?service=ghcr.io&scope=repository:hyperlane-xyz/<IMAGE>:pull" | jq -r .token)
curl -s -H "Authorization: Bearer $TOKEN" "https://ghcr.io/v2/hyperlane-xyz/<IMAGE>/tags/list" | jq -r '.tags[]' | grep '<SHA_PREFIX>'
Find tag from latest workflow run
Look up the sha from the last successful build:
gh run list --workflow=rust-docker.yml --branch=main --status=success --limit=1 --json headSha,createdAt --jq '.[0] | "\(.headSha[:7]) built \(.createdAt)"'
gh run list --workflow=monorepo-docker.yml --branch=main --status=success --limit=1 --json headSha,createdAt --jq '.[0] | "\(.headSha[:7]) built \(.createdAt)"'
gh run list --workflow=node-services-docker.yml --branch=main --status=success --limit=1 --json headSha,createdAt --jq '.[0] | "\(.headSha[:7]) built \(.createdAt)"'
Then match the sha against the GHCR tag list.
Check what's currently deployed in production
grep -E '(tag|Tag)' typescript/infra/config/docker.ts
Instructions
- Determine what the user needs: latest for a branch, a specific commit, or what's deployed.
- Use the appropriate method above to find the tag.
- Return the full image reference:
ghcr.io/hyperlane-xyz/<image>:<tag>.
- If no image exists for their branch/commit, suggest using
/build-docker-image to trigger one.
References
- To trigger a new build, use the
/build-docker-image skill.
- See
docs/docker-image-policy.md for the full Docker image policy.