Tardigrade is a Rust library for workflow automation, aka (business) process automation / orchestration. It allows defining workflows as a WASM module and running it in a fully sandboxed, controlled environment.
A key observation is that a workflow is essentially a future that interacts with the external world via well-defined interfaces:
- Arguments provided to the workflow on creation
- Inbound and outbound message channels
- Timers
- Tasks
That is, given an async runtime that has capabilities to track the progress of external futures, and is able to persist the progress of the workflow at wait points, the workflow itself can be represented as an ordinary future (i.e., just code)! As such, concurrency primitives (fork / join, fork / select, etc.) are not the responsibility of the workflow engine โ they come for free with the programming language / tooling; a workflow can do anything the underlying tooling can do.
See architecture for more technical details.
Extremely early-stage (approximately the first PoC).
Tardigrades are micro-animals known for resilience to extreme environments. Tardigrades are among the few groups of species able to suspend their metabolism for continuous periods (think years) and later come back to life.
Camunda is an example of a BPMN-based process orchestration engine. Newer approaches to process orchestration include Temporal (an example of code-based workflow definition) and Netflix Conductor.
All contributions are welcome! See the contributing guide to help you get involved.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in tardigrade
by you, as defined in the Apache-2.0 license,
shall be dual licensed as above, without any additional terms or conditions.