Production-ready container images for Elsa Workflows — built, hardened and patched by the maintainer of Elsa.
Elsa Workflows is open source and always will be. Elsa Runtime is the assembled, production-ready distribution of it: pre-built images, a committed security patch cadence, and — on paid tiers — direct access to the person who wrote the engine.
📖 Documentation Wiki · 🐛 Report an issue · 💬 Discussions
Elsa Runtime is not generally available yet. Right now:
- Subscriptions are not open yet. Prices are published so you can plan; get in touch to discuss a tier or request access.
- Community images are free and need no account —
ghcr.io/valence-works/runtime-ce-*, pullable without login. They are the same build the paid tiers get.- If you pulled
valenceworks/elsa-pro-*from Docker Hub, those still work but are no longer updated. Community builds now publish to GHCR; paid builds to a private registry.- Elsa 3.8 is still in preview. These images track
3.8.0-preview.*.- Images now run non-root (UID 1654) on a chiselled base — 11 OS packages instead of 112, no shell, no package manager. Vulnerability scanning gates the build before publication, and every image is signed and ships an SBOM and build provenance.
This repository is documentation and issue tracking only. There is no source here.
| Community | Runtime | Runtime Priority | Maintainer Access | |
|---|---|---|---|---|
| Price / year | Free | €1,500 | €4,500 | €25,000 |
| Availability | Open | Open | Open | 3 slots |
| Registry | Public, no account | Private, token issued | Private, token issued | Private, token issued |
| Hardened, signed, SBOM | ✅ same build | ✅ | ✅ | ✅ |
| Security patch commitment | — | ✅ | ✅ | ✅ |
| Immutable version tags | — | ✅ | ✅ | ✅ |
| Bug reports triaged | Public queue | 5 business days | 2 business days | 1 business day |
| Backports to your pinned minor | — | — | ✅ | ✅ |
| Direct channel to the maintainer | — | — | — | ✅ |
Triage is committed; a fix is not. Every report gets a written answer within your tier's window — accepted with a target release, needs information, won't fix with a reason, or already fixed.
Prices are per year, EUR, excluding VAT. Subscriptions are not open yet — Elsa Runtime is in Early Preview; get in touch to discuss a tier or request access. Existing subscribers keep their rate through at least their following renewal if prices change.
Full details, inclusions and exclusions: Editions & Support
| Image | Elsa API | Studio UI | Use when |
|---|---|---|---|
runtime-*-server |
✅ | — | Backend only; Studio deployed separately or not at all |
runtime-*-studio |
— | ✅ | Studio UI pointing at an existing Elsa API |
runtime-*-combined |
✅ | ✅ | Everything in one container, one origin — simplest option |
Community images carry a ce- prefix (ghcr.io/valence-works/runtime-ce-server) and are public —
no account, no login. Paid images drop the prefix (runtime-server) and live in a private registry
you are issued a token for. The bits are identical, down to the manifest digest — see
Pulling Images.
More detail:
Choosing an Image
The fastest path to a running Elsa with a designer UI — one container, one port.
docker run -d --name elsa-pro -p 8080:8080 \
-e CShells__Shells__Default__Features__DefaultAdminUser__AdminUsername=admin \
-e CShells__Shells__Default__Features__DefaultAdminUser__AdminPassword='ChangeThisPassword123!' \
-e CShells__Shells__Default__Features__Identity__SigningKey="$(openssl rand -base64 32)" \
ghcr.io/valence-works/runtime-ce-combined:latestThen open http://localhost:8080 and sign in with the username and password you just set.
| What | Where |
|---|---|
| Studio UI | http://localhost:8080 |
| Elsa API | http://localhost:8080/elsa/api |
| Health (readiness) | http://localhost:8080/health |
| Liveness | http://localhost:8080/alive |
Out of the box this uses SQLite inside the container, so data is lost when the container is removed. That is fine for a first look and wrong for anything else — see Persistence & Databases.
That is the free Community image — no account or login needed. Subscribers use
valenceruntimeimages.azurecr.io/runtime-combined, which is the same build with commitments attached.
docker network create elsa
docker run -d --name elsa-server --network elsa -p 8080:8080 \
-e CShells__Shells__Default__Features__DefaultAdminUser__AdminUsername=admin \
-e CShells__Shells__Default__Features__DefaultAdminUser__AdminPassword='ChangeThisPassword123!' \
-e CShells__Shells__Default__Features__Identity__SigningKey="$(openssl rand -base64 32)" \
-e Elsa__Cors__AllowedOrigins__0=http://localhost:8081 \
ghcr.io/valence-works/runtime-ce-server:latest
docker run -d --name elsa-studio --network elsa -p 8081:8080 \
-e Studio__HostingModel=WebAssembly \
-e Studio__Client__Backend__Url=http://localhost:8080/elsa/api \
ghcr.io/valence-works/runtime-ce-studio:latestStudio is on http://localhost:8081.
Studio__Client__Backend__Url must be reachable from your browser — not from inside the Docker
network — and the server needs a matching CORS origin. This is the single most common setup mistake;
Running the Images explains both
hosting models.
| Page | What's in it |
|---|---|
| Getting Started | First run, in more detail than above |
| Choosing an Image | Server vs Studio vs Combined, hosting models |
| Pulling Images | Registries, private registry authentication, tags and pinning |
| Running the Images | Docker run, Compose, Kubernetes notes, health probes |
| Configuration | Precedence, /config/config.json, environment variable reference |
| Persistence & Databases | SQLite, PostgreSQL, other providers, volumes |
| Extending with Nuplane | Adding database providers, message buses, schedulers at runtime |
| Production Checklist | What to change before going live |
| Troubleshooting | Common failures and how to diagnose them |
| Editions & Support | Tiers, what's included, where to get help |
The right place depends on what the problem is — and if you're on a paid tier, you can always use your private channel for anything.
| Your problem is | Go to |
|---|---|
| An Elsa engine bug or feature request | elsa-workflows/elsa-core — that's where fixes land |
| An image, packaging or deployment problem | Issues on this repo |
| A question, or "how do I…" | Discussions |
| Billing, licensing, subscriptions | Commercial contact — pending |
| A suspected security vulnerability | Security contact — pending. Please do not use public trackers |
Paid subscribers: use your private intake channel — it's the only one carrying a response commitment. Public channels here are best-effort.
- Elsa Workflows — the engine — is open source under the MIT License. Unaffected by anything here.
- Community images are free to use. (Terms to be published.)
- Paid images are licensed under the Valence Works Commercial License and require a current subscription. (Link pending.)
Elsa Runtime is a product of Valence Works. Elsa Workflows is an open source project by the same maintainer and remains freely available.