This is the operational runbook for the Forge platform. The sections below focus on infrastructure and delivery (container runtime mode on ECS, GitHub Actions runners for native builds). The same document can be extended with additional runbook procedures over time.
There's an escape hatch if experiencing Quarkus/GraalVM native issues.
- Native image is failing (startup errors, crashes, memory issues)
- You need a fast, stable fallback
Edit GitHub > Settings > Secrets and variables > Actions > Variables > FORGE_ECS_RUNTIME_MODE > jvm
- Keeps the same deploy tag:
<serviceName> - You should also see a tag
<serviceName>-jvmin ECR (previous version will have been tagged with<serviceName>-native) - Swaps runtime only (native → JVM)
- No infra or config changes required
Revert the GHA variable to native.
- Native builds are slow or timing out on GitHub-hosted runners
- You need consistent performance for GraalVM builds
In GitHub:
- Go to Settings → Actions → Runners → New self-hosted runner
- Select macOS
- Copy the commands
On your Mac, run exactly what GitHub provides:
mkdir actions-runner && cd actions-runner
curl -o actions-runner.tar.gz -L <url-from-github>
tar xzf actions-runner.tar.gz
./config.sh --url https://github.com/get-forge/forge-core --token <token>
./run.shNotes:
- Add labels when prompted (for example
self-hosted,macOS,X64,forge-ecr) - Keep the terminal or session running (or install as a service)
Requirements (do not skip):
- Docker or OrbStack running
dockerCLI works in the same shell- Machine must stay awake during builds
Set repo variable Settings → Actions → Variables:
FORGE_ECR_RUNS_ON = ["self-hosted","macOS","X64","forge-ecr"]
This routes the ECR build job to your Mac. Remove the variable to revert to ubuntu-latest.
In the workflow run:
- Job shows
runs-on: self-hosted - Logs execute on your machine (visible locally)
Uses existing OIDC role forge-github-actions-ci. No changes required if hosted runners already work.
- Stop runner: Ctrl+C in the runner terminal
- Remove variable
FORGE_ECR_RUNS_ONto fall back to GitHub-hosted
- Native builds run inside Docker (Linux), even on macOS
- First run is slower (pulls builder images)