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 runner | Linux target | Artifact |
|---|---|---|
| x86_64 | x86_64-unknown-linux-musl | Static native executable |
| ARM64 | aarch64-unknown-linux-musl | Static 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.
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-edgeRun on the target
Copy the executable to the matching Linux target. No CLI, Rust toolchain, Docker, Redis, AWS credentials or internet connection is needed.
./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.dbExpected: 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:
./sensor-edge status --db state.db
./sensor-edge reconcile --db state.db --request-id '<requestId>' --action ackAfter 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.
- Native target builder and artifact validation b78d351 · ai/rf-edge-02-cli
- Standalone execution and reconciliation commands b78d351 · ai/rf-edge-02-cli
- Shared artifact integrity and handler extraction b78d351 · ai/rf-edge-02-cli
- Native execution architecture and contracts b7c85c2 · ai/rf-edge-02-docs
- Matching-architecture CI and operator journey b7c85c2 · ai/rf-edge-02-docs
- Native target verification evidence b7c85c2 · ai/rf-edge-02-docs
