A deterministic workflow engine built on the WASM Component Model.
⚠️ Pre-release: Expect changes in CLI, gRPC, WIT, and database schema.
- Obelisk Runtime: A single binary executing deterministic workflows, activities, and webhook endpoints, persisting steps in execution log using SQLite.
- Control Interfaces:
- CLI: Manage executions via the
obelisk
command. - gRPC API: Programmatic interaction.
- Web UI: View executions and submit function executions.
- CLI: Manage executions via the
- Schema-first design with end-to-end type safety: Uses WASM Component Model and WIT IDL for generating API bindings.
- Resilient Activities: Automatic retries on errors and timeouts, with persistent input and results.
- Replayable Workflows: Deterministic execution ensures reliable recovery, debugging, and auditing.
- Periodic Tasks: Automate checks, send emails, or suspend projects.
- Background Jobs: Offload tasks with built-in error handling and retries.
- Batch jobs: Manage large-scale tasks like deployments.
- End-to-End Testing: Automate tests with detailed logs.
- Webhook Integrations: Trigger workflows from external events (e.g., GitHub).
- Running AI Generated Code: Code is sandboxed and every step can be audited.
- Must be idempotent (retriable). This contract must be fulfilled by the activity itself.
- Executed in a WASM sandbox.
- Support for HTTP requests via WASI 0.2 HTTP client.
- Execution timeout handling.
- Automatic retries on errors, timeouts, and panics.
- Persistent execution results.
- Fully replayable with persistent execution log.
- Executed in a WASM sandbox.
- Automatic retries on failures.
- Support for spawning child executions in join sets and structured concurrency.
- Distributed sagas (planned).
- Mounted as a URL path, serving HTTP traffic.
- Executed in a WASM sandbox.
- Support for spawning child executions.
- Concurrency limits and customizable retry handling.
The Stargazers app features:
- A webhook listening to GitHub star events.
- Activities for interacting with Turso DB, ChatGPT, and GitHub.
- A workflow orchestrating the activities.
- Linux x64, arm64 (musl, glibc v2.35+, NixOS)
- macOS 13 x64
- macOS 14 arm64
curl -L --tlsv1.2 -sSf https://raw.githubusercontent.com/obeli-sk/obelisk/main/install.sh | bash
Or use cargo-binstall:
cargo binstall obelisk
docker run --net=host getobelisk/obelisk
Requires protoc
.
cargo install --locked obelisk
Using Nix:
nix run github:obeli-sk/obelisk/latest
See obelisk-templates.
Check obelisk.toml for configuration details.
obelisk server generate-config
obelisk server run
obelisk client component list
# Call fibonacci(10) activity from the workflow 500 times in series.
obelisk client execution submit testing:fibo-workflow/workflow.fiboa '[10, 500]' --follow
Visit localhost:8080 to manage components, functions and execution history.
This project has a roadmap and features are added in a certain order. Discuss features via GitHub Discussions before contributing. A Contributor License Agreement is required.
Set up dependencies via Nix:
nix develop
Or manually install dependencies (see dev-deps.txt).
Run the program:
cargo run --release
./scripts/test.sh