Documentation / Execution Environments

Build for device and edge

Build a native executable for your target, then run your workflow offline.

Build on matching-architecture CI

Use x86_64 CI machines for x86_64 targets and ARM64 CI machines for ARM64 targets. Build the handlers and runtime on the same architecture. Linux devices, gateways, local servers and cloud VMs use the same OS and architecture targets.

CI runnerLinux targetArtifact
x86_64x86_64-unknown-linux-muslStatic native executable
ARM64aarch64-unknown-linux-muslStatic native executable

The build machine needs the versioned Rippflow native SDK, Rust/Cargo and the target musl toolchain. The target needs the executable, writable temporary/state directories and any explicitly declared handler dependencies.

Build your application

From the native SDK checkout, build a handler and package the sensor example. For ARM64 CI, replace both target triples with aarch64-unknown-linux-musl.

shell
rustup target add x86_64-unknown-linux-musl
cargo build --locked --bin rippflow
cargo build --locked --profile edge -p rippflow-edge-example-handler --target x86_64-unknown-linux-musl
cp target/x86_64-unknown-linux-musl/edge/rippflow-edge-example-handler examples/edge-native/sensor/handler
./target/debug/rippflow build edge --target x86_64-unknown-linux-musl --runtime-source . --build-cache target --workflow-def examples/edge-native/sensor/workflow.json --handlers examples/edge-native/sensor/handlers.json --env dev --features sqlite,license --out dist/sensor-edge

Run on the target

Copy the executable to the matching Linux target. No CLI, Rust toolchain, Docker, Redis, AWS credentials or internet connection is needed.

shell
./sensor-edge validate
./sensor-edge run --input '{"temperature":34.5}' --db state.db --json
./sensor-edge status --db state.db
./sensor-edge recover --db state.db

Expected: a completed workflow with alert: true. Add --output-dir when a handler writes persistent artifacts.

Authorize production execution

Build with --env prod --features sqlite,license, a vendor-signed --license-key and a signed --deployment-manifest matching the workflow and handlers. Renew the local entitlement with runtime --license site.lic. The deployment environment and vendor trust key are fixed in the executable.

Recover safely

Keep the matching executable and database. SQLite preserves completed phases and attempt limits. Failed executions become blocked; recovery reports them while unrelated work continues. Inspect external effects before acknowledging a task:

shell
./sensor-edge status --db state.db
./sensor-edge reconcile --db state.db --request-id '<requestId>' --action ack

After repairing the cause, use --action resume to explicitly retry, then run recover --db state.db. Counters stay intact; an exhausted attempt budget cannot invoke another handler. Acknowledgement is terminal. Deduplicate external effects with RIPPFLOW_IDEMPOTENCY_KEY.

Use daemon --db state.db --input-dir inbox for events. Files are claimed before parsing; invalid or conflicting input moves to inbox/failed/, and healthy events continue after restart. The runtime locks the database inode, shares symlink ownership and rejects hard-linked databases. Follow the shared workflow journey →

Verified sources

Checked 2026-11-09.

Let's talk

Contact Rippflow

Tell us about your workflows, deployment or pricing.

We'll reply to your email.

Search docs

Search workflows, handlers and operations.