Repository navigation
Pulling Images
Where the images live, how to authenticate, and how to pin a version.
Everything on this page is live and verifiable today. What is not open yet is subscriptions — so if you do not already hold a token, the paid images exist but you cannot yet buy access to them.
| Status | ||
|---|---|---|
| Paid images | valenceruntimeimages.azurecr.io/runtime-* |
✅ Published, private |
| Community images | ghcr.io/valence-works/runtime-ce-* |
✅ Published, public — no login |
| Registry authentication | Registry token we issue you | ✅ Enforced on paid images |
| Immutable version tags | <elsa-version>-build.<n> |
✅ Paid line only |
| Non-root, chiselled base | Yes | ✅ Live |
| Signing / SBOM / provenance | Published per image | ✅ Live on both lines |
| Subscriptions | Buy a tier | ❌ Not open yet — Editions and Support |
If you pulled valenceworks/elsa-pro-* from Docker Hub, those images still work and are not
going anywhere — but they are no longer updated. New builds publish to the two registries above:
Community to GHCR, paid to Azure Container Registry.
Public on GHCR. No authentication, no account, no signup.
docker pull ghcr.io/valence-works/runtime-ce-combined:latest
docker pull ghcr.io/valence-works/runtime-ce-server:latest
docker pull ghcr.io/valence-works/runtime-ce-studio:latestThese are the same build the paid tiers get — same layers, same digest, same hardening. Nothing is stripped out or deliberately degraded.
What a subscription adds is commitments, not different bits:
| Community | Paid | |
|---|---|---|
| Image contents | Identical | Identical |
| Security patch commitment | None | Yes |
| Bug reports triaged | Public queue, no commitment | Committed window |
| Backports to your pinned line | — | Priority and above |
| Immutable tags |
No — latest and <elsa-version>, both move |
<elsa-version>-build.<n> |
The tag difference is the one that matters in practice. Community publishes only moving tags, so a Community deployment cannot be pinned to an exact build. That is the line between evaluating and developing freely — which you are welcome to do indefinitely — and depending on this commercially.
If you subscribe later, you keep running the same image: no migration, no revalidation, you simply gain the commitments and the immutable tags.
Private, on Azure Container Registry (valenceruntimeimages.azurecr.io). Access is granted by
subscription — there are no license keys or activation in the software itself; your registry
credentials are the license.
You do not need an Azure account, a Microsoft account, or a GitHub account. We issue you a registry token — a username and password that work with
docker loginand nothing else. It has pull access to the three paid images and no other permission.
Issued when your subscription starts. It looks like:
username: your-organisation
password: <84-character string>
Treat the password like any other credential: store it in your secret manager, not in a repository.
echo "$VALENCE_REGISTRY_PASSWORD" | \
docker login valenceruntimeimages.azurecr.io -u YOUR_TOKEN_NAME --password-stdinPiping via --password-stdin keeps it out of your shell history. Don't pass it with -p.
docker pull valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413
docker pull valenceruntimeimages.azurecr.io/runtime-server:3.8.0-preview.5413
docker pull valenceruntimeimages.azurecr.io/runtime-studio:3.8.0-preview.1667Studio carries a different version number from the other two — see Tags below.
- Your token grants pull only, on the three paid repositories. It cannot push, and cannot see anything else in the registry.
- Access follows your subscription. The token password carries an expiry date aligned to your subscription period, so access lapses on its own if a renewal does not happen — and is reissued when it does.
- Do not share credentials. Each legal entity needs its own subscription — see the commercial license. Tokens are per-subscriber, so a shared credential is traceable.
- Revocation takes effect within about a minute.
- Images already pulled keep working — there is no phone-home, no kill switch, and no telemetry.
⚠️ docker loginsucceeding does not by itself prove you have access. The registry issues a token to any well-formed credential and checks permissions when you actually pull. If you are diagnosing an access problem, test adocker pull, not a login.
GitHub Actions, with the token stored as a secret:
- name: Log in to the Valence registry
uses: docker/login-action@v3
with:
registry: valenceruntimeimages.azurecr.io
username: ${{ secrets.VALENCE_REGISTRY_USERNAME }}
password: ${{ secrets.VALENCE_REGISTRY_PASSWORD }}Kubernetes, as an image pull secret:
kubectl create secret docker-registry valence-registry \
--docker-server=valenceruntimeimages.azurecr.io \
--docker-username=YOUR_TOKEN_NAME \
--docker-password="$VALENCE_REGISTRY_PASSWORD"spec:
imagePullSecrets:
- name: valence-registry
containers:
- name: elsa
image: valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413-build.62Tags derive from the Elsa version the image was built against, so the tag answers "which Elsa is in this image?" on its own.
| Tag | Example | Moves? | Line | Use for |
|---|---|---|---|---|
<elsa-version>-build.<n> |
3.8.0-preview.5413-build.62 |
❌ Never | Paid | Production. Exactly one build, forever |
<elsa-version> |
3.8.0-preview.5413 |
✅ | Both | Newest image for that Elsa build |
sha-<commit> |
sha-c7fc5a6 |
❌ Never | Paid | Reproducing an exact build when debugging |
latest |
latest |
✅ | Both | Local experiments only |
While Elsa 3.8 is in preview, the Elsa version carries a
-preview.<n>suffix, so the tags do too. Plain semver tags (3.8.1,3.8,3) are cut from release tags and do not exist yet; a3.8-stablemoving pointer only becomes meaningful once 3.8 is GA. Until then,<elsa-version>-build.<n>is the immutable tag to pin to.
⚠️ runtime-studiois versioned on Elsa Studio, not the engine, and the two preview numbers advance independently. At the time of writing, server and combined are on3.8.0-preview.5413while studio is on3.8.0-preview.1667. Do not assume one tag string works for all three images — read each repository's tags rather than copying a tag across.
# ✅ Immutable — you get the same bits every time
image: valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413-build.62
# ⚠️ Moves — fine if you have tested rollback
image: valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413
# ❌ Never
image: valenceruntimeimages.azurecr.io/runtime-combined:latestPin harder with a digest, which survives even a tag being force-pushed:
docker inspect --format='{{index .RepoDigests 0}}' \
valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413-build.62image: valenceruntimeimages.azurecr.io/runtime-combined@sha256:abc123…docker inspect valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413-build.62 \
--format='{{index .Config.Labels "org.opencontainers.image.description"}}'Every image is signed with cosign, keylessly, and carries an SPDX SBOM and SLSA build provenance as attestations. Community images are signed too — they are the same build.
# Verify the signature
cosign verify valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413-build.62 \
--certificate-identity-regexp='.*valence-works.*' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com
# Fetch the SBOM
cosign download sbom valenceruntimeimages.azurecr.io/runtime-combined:3.8.0-preview.5413-build.62A successful verification prints the signing identity — the GitHub Actions workflow that built the image. Check that it is what you expect: a signature only tells you who signed, so a verification that passes against any identity you did not specify has told you nothing.
Your subscription token is enough to verify; no additional access is needed.
Verifying in-cluster before admission is the point of this — expect to wire it into an admission controller or your CI gate.
Images are built for linux/amd64 and linux/arm64, so Apple Silicon and Graviton work
natively. Docker selects the right one automatically; force it with --platform linux/amd64 if you
need to.
Next: Running the Images · Configuration · Production Checklist
Valence Runtime — a product of Valence Works · Elsa Workflows is open source under the MIT License · Found an error in these docs? Open an issue.
Start here
Deploying
Going further
Commercial