rw-base-runtime
The rw-base-runtime
image is the foundation of every RunWhen CodeCollection. Every codecollection
Dockerfile starts with FROM rw-base-runtime.
What’s inside
| Category | Contents |
|---|---|
| Python | Python 3.14 on slim-bookworm |
| Worker | The RunWhen worker binary (copied from the published runner-worker image) |
| Core keywords | rw-core-keywords installed system-wide — import RW.Core / import RW.Utils works with no extra setup |
| Kubernetes | kubectl, Helm, istioctl, kubelogin |
| Cloud CLIs | AWS CLI v2, Azure CLI, Google Cloud SDK (gcloud, gsutil, bq) |
| Infrastructure | Terraform, go-task |
| Dev tools | git, gh (GitHub CLI), jq, yq, jp, skopeo, pwsh |
| AI / workflow | linear-cli, Claude Code, Cursor CLI |
Robot-runtime helper scripts
Installed at /home/runwhen/robot-runtime/:
| Script | Purpose |
|---|---|
entrypoint.sh | Default ENTRYPOINT — wires the worker to Robot Framework |
runrobot.sh / runrobot.py | Resolves .robot file paths and invokes robot |
RWP.py | Robot listener / preprocessor |
metrics_daemon.py | Exports runtime metrics (CPU, memory, duration) |
process_metrics.py | Per-process metric collection |
runtime_metrics.py | Runtime metric definitions |
See RUNTIME_METRICS.md for what the metrics daemon exports.
Image tags
Published to ghcr.io/runwhen-contrib/rw-base-runtime:
| Tag | When |
|---|---|
<sha> / <sha7> | Every push and PR |
main / latest | Push to main |
pr-<n> | Pull request events |
v<x.y.z> | Git tags matching semver |
CodeCollections should pin a specific tag (not :latest) in their Dockerfile.
The registry’s CCV catalog embeds the base-runtime commit SHA into the
codecollection image tag suffix (<ref>-<cc_sha>-<rt_sha>) so PAPI always
knows which runtime a given image was built against.