Crates.io | obeli-sk |
lib.rs | obeli-sk |
version | 0.1.7 |
source | src |
created_at | 2024-06-11 18:48:45.757749 |
updated_at | 2024-06-13 11:39:37.454808 |
description | Deterministic workflow engine |
homepage | |
repository | https://github.com/obeli-sk/obeli-sk |
max_upload_size | |
id | 1268795 |
size | 213,703 |
Deterministic workflow engine built on top of WASI 0.2
This is a pre-release. This repo contains backend code for local development and testing. The software doesn't have backward compatibility guarantees for CLI nor database format. Please exercise caution if attempting to use it for production.
Activities that must be idempotent
Deterministic workflows
Work stealing executor
TODO
TODO
# Install rust from https://rustup.rs/
cargo install --locked obeli-sk
Set up the environment using nix flakes:
nix develop # or direnv allow, after simlinking .envrc-example -> .envrc
Or manually:
cargo install cargo-component --locked
Run the program:
cargo run --release
obelisk executor serve &
obelisk component add github:obeli-sk/examples@latest
obelisk component list
obelisk execution run ...
Fatal error mapping to supported result types, e.g. permanent timeout to a numeric or string representation.
WASM upgrades - disabling work stealing by executors with outdated wasm hashes
UI
External Activity RPC
OpenAPI generator for activities
Params typecheck on creation, introspection of types of all functions in the system
Host function: generate a random value, store it in the event history - wasi random,available for workflows as wel
Cancellation with recursion
Limits on insertion of pending tasks or an eviction strategy like killing the oldest pending tasks.
Labels restricting workflows/activities to executors
ErrId that is passed back to parent, error detail
cargo run
cargo nextest run --workspace --target-dir=target/debug/nosim
MADSIM_ALLOW_SYSTEM_THREAD=1 RUSTFLAGS="--cfg madsim" cargo nextest run --workspace --target-dir=target/debug/madsim