Skip to content
GitHub

Quick start

From source:

Terminal window
cd web && npm install && npm run build && cd ..
go build -o hotloop-flow ./cmd/hotloop-flow
export HOTLOOP_FLOW_DATA_DIR=./data
export HOTLOOP_FLOW_ADMIN_USER=admin
export HOTLOOP_FLOW_ADMIN_PASSWORD_HASH="$(./hotloop-flow hash-password -password 'something-long')"
export HOTLOOP_FLOW_CREDENTIAL_SECRET="$(openssl rand -hex 32)"
./hotloop-flow

The editor build comes first and is not optional. The bundle is embedded with go:embed, so a Go build without it fails on a missing pattern rather than producing a binary with no editor in it.

Or skip all of that:

Terminal window
podman run --rm -p 1880:1880 -v hotloop-flow-data:/data \
-e HOTLOOP_FLOW_ADMIN_USER=admin \
-e HOTLOOP_FLOW_ADMIN_PASSWORD_HASH='<bcrypt hash>' \
-e HOTLOOP_FLOW_CREDENTIAL_SECRET="$(openssl rand -hex 32)" \
ghcr.io/hotloop-io/hotloop-flow:2.2.0

Generate the hash with podman run --rm ghcr.io/hotloop-io/hotloop-flow:2.2.0 hash-password -password 'something-long'. The image is distroless nonroot with no shell in it, so there is nothing to exec into and nothing for anybody who gets code execution to pivot with.

Then open http://localhost:1880. Drop a flows.json into the data directory and restart, or just build the flow in the editor. The editor is vanilla TypeScript and native SVG, 48.5 kB of JS and 20.1 kB of CSS minified.

Command What it does
hotloop-flow Serves the runtime, the admin API, and the editor. The default.
hotloop-flow -config <path> Same, from a YAML file. Also reads HOTLOOP_FLOW_CONFIG.
hotloop-flow hash-password bcrypt hash for a password. Takes -password or HOTLOOP_FLOW_PASSWORD. Refuses anything under 8 characters.
hotloop-flow import <flows.json> Reports what would happen before you deploy it.
hotloop-flow diff <old> <new> Node-by-node diff of two flow files. Also git’s diff driver and difftool.
hotloop-flow test <tests.yaml> Runs flow tests in process. -junit for CI.
hotloop-flow deploy -file <flows.json> Shows the diff against a running instance, then deploys with a note. For CI.
hotloop-flow export The running flow file, byte for byte, or -deployment N from the history.
hotloop-flow token A new API token and the hash to configure for it.
hotloop-flow bench The benchmark harness that produced the numbers.
hotloop-flow version The version.