HotLoop Cascade
Workflow automation that connects the plant to everything around it, and finishes the job.
Category: HotLoop
An alarm, a webhook, a schedule, an MQTT burst, a file that shows up, a new email or a new row becomes a batch of items. The items run through steps that call real systems with real credentials. Every step is checkpointed, so if an API is down or the node reboots halfway through, the job still finishes. A retry is a row in the database, not a process hoping nobody pulls the plug.
It's one static Go binary. On a small node it runs on SQLite. With PostgreSQL it splits into API, webhook, and worker pods you scale on their own, and PostgreSQL is the queue too, so there's no Redis to run on a plant cluster.
What it does
- Starts workflows from a HotLoop alarm or tag reading, a webhook, a schedule, an MQTT burst, a file in its files directory, an email in an IMAP mailbox, or a new row in ERPNext.
- Calls HTTP, PostgreSQL, email and files (CSV, Excel, and the text of a PDF), and sends notifications through ntfy, Discord, and Gotify.
- Reads tags and alarms from a HotLoop Gateway, acknowledges alarms, runs its scripts, applies recipes, and triggers its automations.
- Holds credentials in a vault with OAuth2, sealed with a key that lives outside the database.
- Signs people in with OIDC and enforced MFA, with projects and roles, an audit log, and version history on every workflow.
- Exports Prometheus metrics, and records every execution as one OpenTelemetry trace with a span for each step. With no endpoint set, nothing is sent.
- Converts a workflow exported as JSON from another tool. What it can be sure of comes across, and the rest comes across switched off with its original settings in the notes. It never guesses what a JavaScript expression meant, and it never brings credentials.
What it won't do
- It won't write to your equipment. Cascade reads and subscribes. Any command that moves a valve or changes a setpoint goes through the HotLoop Gateway's write gate, so the gate's audit sees every write no matter which workflow started it.
- It won't run JavaScript in field expressions. Fields use a small expression language that can't touch the OS, the network, or the filesystem. JavaScript runs in one place, the Code step, in a separate jailed process with no secrets, no network, and no filesystem.
- It won't gate features. Single sign-on, enforced MFA, roles, audit, version history, scoped API keys, and HA workers are in every install. There is no license check in the code.
- It won't phone home. No license server and no cloud dependency. Telemetry is opt-in and off by default.
Running on EmberNet
- It's one instance per node. Deploy it on as many nodes as you need.
- The default install is one pod on SQLite with a 5Gi volume. It requests 100m of CPU and 128Mi of memory and is limited to 512Mi.
- Set
splittotruewith PostgreSQL and the chart runs separate API, webhook, and worker pods. PostgreSQL can be one the chart runs, or yours through an existing secret. - The key that seals stored credentials is created on first install and kept when the release is uninstalled, because a key that goes with the release takes every credential in a kept database with it. Back it up.
- The pods run nonroot with a read-only root filesystem and every capability dropped.
- Health is at
/healthzand readiness at/readyz. Metrics are at/metrics, and a bearer token can be required for them. - The file steps work in one directory and can't reach anything outside it. They are off until you turn that directory on.
Licensing
HotLoop Cascade is under the HotLoop Business Source License 1.1, like the rest of HotLoop. Home and lab use is free, and so is use by schools, nonprofits, and government. Business use runs through EmberNet, and signing up is free. There's no license key. Each version converts to GPL-3.0 or later four years after it's first published. See Using HotLoop in a business.