Deploy
You have a working flow. Every path below runs on infrastructure you control; managed hosting is the optional alternative at the end.
From config to running flow
Every self-hosted path is the same two steps, with checks before them:
- Validate the config:
walkeros validate flow.json - Simulate an event through it locally, destinations mocked, see bundled mode
- Bundle it into an artifact:
walkeros bundle flow.json -o dist/ - Run the artifact:
runneros start dist/flow.mjs
Building and running are two tools. walkeros (the CLI) validates,
simulates and bundles. runneros (the runtime) only starts a prebuilt
artifact: it has no bundler, so a production host never needs a package
manager or registry access. See the runtime for why the
stages are kept apart.
Build once
npx @walkeros/cli bundle flow.json -o dist/For a server flow this writes dist/flow.mjs, dist/package.json, and
dist/node_modules/. The step packages load from node_modules/, so ship the
whole directory, not flow.mjs alone. A web flow builds to a single
dist/walker.js that any static host can serve.
Run it yourself
Docker, the standard path. Mount the bundle directory at /app/flow, where
the image expects flow.mjs:
docker run -d -p 8080:8080 \
-v "$PWD/dist:/app/flow:ro" \
walkeros/flow:<version>Use a walkeros/flow version that ships runneros, ideally the same version
as the CLI that built the artifact, see image tags.
For a self-contained image, use the
canonical Dockerfile.
Node, from the bundle. flow.mjs exports a start function and does not run
on its own with node; runneros starts it, without Docker:
npx --package=@walkeros/runner runneros start dist/flow.mjsIntegrated mode needs none of this: the flow deploys with your application and needs nothing extra. See integrated mode.
The same flow.json drives every path, so switching between them (or between
providers) is a rebuild and a redeploy, not a migration. To change a running
flow, bundle again and redeploy the new artifact.
Before production
- Test offline: run the event through the built flow with each destination mocked, see bundled mode.
- Gate CI:
walkeros validate flow.json --strictturns contract violations into errors, see validate. - Wire consent before real traffic, see the consent guide.
- Keep
flow.jsonin git: deploys stay reviewable and reversible.
Managed hosting
Next steps
- Runtime: the image, inputs, environment variables, constraints
- Docker quickstart: a server flow running in five minutes
- CLI reference: all commands and options