Skip to content

Custom images

Custom images are an enterprise feature in closed beta. Contact hello@reflow.io for access.

POST /v1/images/login returns a short-lived Docker credential scoped to your team’s repository namespace. The username is reflow and the credential expires after about one hour.

With the variables from the API reference:

Terminal window
curl --fail-with-body -X POST "$REFLOW_API/images/login" \
-H "Authorization: Bearer $REFLOW_TOKEN" \
> reflow-registry.json
jq -r .password reflow-registry.json | \
docker login registry.reflow.io --username reflow --password-stdin
REFLOW_REPOSITORY=$(jq -r .repository_prefix reflow-registry.json)
docker build -t "registry.reflow.io/$REFLOW_REPOSITORY/example:latest" .
docker push "registry.reflow.io/$REFLOW_REPOSITORY/example:latest"

Every pushed tag is scanned. Only tags with scan_status='passed' can boot. The dashboard image catalog lists system and team images with each tag’s scan status and state.

The MCP container surface includes list_images, run_image, exec, tail_exec, stop_container, list_containers, get_container, and update_image. run_image binds an approved image to a live session; poll get_container until it is ready before executing commands.

Commands inside a booted container run through the exec and tail_exec tools as plain shell, streamed back to the session transcript. For trusted code that should run inside the browser task itself, use a browser self-target: its exec "…" in browser form is the only image reference RFL executes today.