# Smyrg > GitHub Actions runners on fresh Boat virtual machines, using the customer's Boat account. ## Configure a repository image - [Runner image contract](https://smyrg.com/docs/runner-images.md): Complete manifest, setup environment, limits, build and activation flow, and authentication rules. - [Offline validator](https://smyrg.com/tools/check-image.mjs): Standalone Node.js 22+ checker; run `node check-image.mjs --json`. Reads configuration without executing setup or using the network. - [Image JSON Schema](https://smyrg.com/schemas/image.schema.json): Editor validation for `.smyrg/image.yml`. Use `.smyrg/image.yml` plus a Bash setup script and optional declared files. Setup can install packages, toolchains, binaries, and system services. Do not put secrets in these files. Changes to image inputs on the default branch trigger a build. Smyrg activates the verified current version and keeps the last good image if a build fails. Each CI job uses a fresh VM; Smyrg does not reuse a job VM. Use the existing signed-in Smyrg workspace for account operations. There is no public API-key authentication contract. Do not invent access tokens or put session cookies in repository files.