Skip to content

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

CategoryContents
PythonPython 3.14 on slim-bookworm
WorkerThe RunWhen worker binary (copied from the published runner-worker image)
Core keywordsrw-core-keywords installed system-wide — import RW.Core / import RW.Utils works with no extra setup
Kuberneteskubectl, Helm, istioctl, kubelogin
Cloud CLIsAWS CLI v2, Azure CLI, Google Cloud SDK (gcloud, gsutil, bq)
InfrastructureTerraform, go-task
Dev toolsgit, gh (GitHub CLI), jq, yq, jp, skopeo, pwsh
AI / workflowlinear-cli, Claude Code, Cursor CLI

Robot-runtime helper scripts

Installed at /home/runwhen/robot-runtime/:

ScriptPurpose
entrypoint.shDefault ENTRYPOINT — wires the worker to Robot Framework
runrobot.sh / runrobot.pyResolves .robot file paths and invokes robot
RWP.pyRobot listener / preprocessor
metrics_daemon.pyExports runtime metrics (CPU, memory, duration)
process_metrics.pyPer-process metric collection
runtime_metrics.pyRuntime metric definitions

See RUNTIME_METRICS.md for what the metrics daemon exports.

Image tags

Published to ghcr.io/runwhen-contrib/rw-base-runtime:

TagWhen
<sha> / <sha7>Every push and PR
main / latestPush 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.