.ai-implement/image.yml to the default branch of your target repo. When AI-Implement starts a session for your repo, it reads this file and boots the Fly Machine using your image instead of the default.
How it works
Create a file at.ai-implement/image.yml in the default branch of your target repo:
Building a custom image
Build your imageFROM the published base image so you inherit all the tools and configuration the default runner provides. Then add whatever your repo needs on top:
Setup steps
1
Create a Dockerfile
Start from the base image and add the tools or runtimes your repo requires.
2
Build and push to a public registry
Build the image and push it to a registry where it can be pulled without authentication. GitHub Container Registry (
ghcr.io) is a common choice.3
Commit .ai-implement/image.yml
Create the file in your target repo pointing at the image you just pushed:Commit this to your default branch. AI-Implement reads it from there on the next run.
.ai-implement/image.yml works for both execution modes.- In Fly Machines mode, the orchestrator boots the session machine directly on your image.
- In GitHub Actions mode, the orchestrator forwards your image to
claude-implement.ymlas thecontainer.imagefor the workflow job.
Alternative: GitHub Actions variable
Repos using GitHub Actions execution mode have a second image-override mechanism: theAI_IMPLEMENT_RUNNER_IMAGE repository variable.
When set, the synced claude-implement.yml workflow uses that image as the container for its job.
- The orchestrator’s resolved image (from
.ai-implement/image.ymlor its ownSESSION_IMAGE) is forwarded as the workflow’srunner_imageinput, if either is set - Otherwise the workflow falls back to
AI_IMPLEMENT_RUNNER_IMAGEif that variable is set - Otherwise the built-in default (
ghcr.io/builddownai/ai-implement-runner:latest) is used