Quick start
From source:
cd web && npm install && npm run build && cd ..go build -o hotloop-flow ./cmd/hotloop-flow
export HOTLOOP_FLOW_DATA_DIR=./dataexport HOTLOOP_FLOW_ADMIN_USER=adminexport HOTLOOP_FLOW_ADMIN_PASSWORD_HASH="$(./hotloop-flow hash-password -password 'something-long')"export HOTLOOP_FLOW_CREDENTIAL_SECRET="$(openssl rand -hex 32)"
./hotloop-flowThe 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:
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.0Generate 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.
The commands
Section titled “The commands”| 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. |