HotLoop Cascade 0.1.1 release notes
What this is
Section titled “What this is”0.1.1 is the first release that isn’t a candidate. There was a 0.1.0 tag and it never published anything: its chart test failed on a hosted runner and I cancelled the run, so nothing reached the registry. A tag stays where it is, so this is the same code with the test fixed. That test checked the upgrade by listing pods while the old ones were still stopping, which a quiet laptop never shows. It waits for the rollout to finish and the old pods to go now, and I run it with the old pods frozen so it can’t pass by luck.
What it is: the workflow engine I wanted on a plant floor. One static Go binary, SQLite on one box or Postgres with workers when you need more, and the editor baked into the binary so there is nothing else to run.
What’s in it
Section titled “What’s in it”The engine, with every step checkpointed, so a kill -9 in the middle of a run picks up where it left off. Durable waits, retries, error ports and error workflows. Expressions, and a Code step that runs JavaScript in its own jail in its own process.
Webhooks with a durable inbox, schedules that fire each slot exactly once no matter how many mains are looking, MQTT, and a trigger for files that land in a directory. An HTTP step for anything with an API, and connectors for HotLoop, Postgres, ERPNext, email, ntfy, Gotify and Discord. No others, on purpose.
A credential vault with key rotation, OAuth2 for every grant a plant needs, sign-in with passwords, TOTP, passkeys or your OpenID Connect provider, enforced MFA, projects and roles, an audit log you can verify, every save kept as a version, and a scoped API with an OpenAPI document. Metrics, traces and probes, so somebody besides me can tell when it’s stuck.
Running it
Section titled “Running it”The image is amd64 and arm64. Pull it by the digest above if you want a deploy that can’t move.
On k3s: the Helm chart, standalone or split into server and workers.
On a plain box: the Quadlet units under deploy/quadlet, SQLite on one box or Postgres with extra workers. They follow :stable, and Podman’s auto-update timer moves them. An update that doesn’t come up healthy gets rolled back to the image that was running. I ran that for real, both flavours, on Podman 5.8.7 under systemd: start waits for healthy, a killed container comes back, a good update lands, a bad one rolls back, and a workflow runs after each.
Things you need to know
Section titled “Things you need to know”Migrations only go forward. A rollback puts the old image back, it does not un-migrate your database, so take a backup before you turn updates on.
The registry was private for this release, so it wanted a podman login ghcr.io as root first. The image and chart are public from 0.1.2 on and pull with no login.
Lose the key that seals stored credentials and every stored credential is unreadable. Keep a copy somewhere that isn’t the box.
License
Section titled “License”Cascade is under HotLoop’s Business Source License 1.1 (BUSL-1.1), same as the rest of the HotLoop lineup. It is not open source and I’m not going to pretend it is. Each version turns into GPL-3.0 or later four years after it’s first made public. Home and lab use is free, and so is production use by schools, nonprofits and government. Business use goes through EmberNET, where signing up is free and so is business use. Hosting it as a service for other people, reselling it and embedding it in something you sell are not granted. The LICENSE file is the legal text and it wins any argument with this paragraph.
What’s not here yet
Section titled “What’s not here yet”SAML, LDAP, SCIM, environments, the HA scheduler with leases, more connectors, AI steps. That’s 0.2.0 and on, and it’s all in docs/ROADMAP.md.