A flexible and extensible workflow engine built on the ergo actor model for building end-to-end automations and tasks.
This project is currently under active development and is not yet ready for production use. The APIs, interfaces, and functionality are subject to change without notice. We recommend waiting for a stable release before using FUSE in any production environment.
FUSE is a workflow engine that enables the creation of complex automation pipelines through a system of interconnected nodes, powered by the ergo actor model. Each node in the workflow operates as an independent actor, processing data, making decisions, and communicating with other nodes through message passing.
FUSE leverages the ergo actor model to provide:
- Isolated Execution: Each node runs as an independent actor
- Message Passing: Asynchronous communication between nodes
- Supervision: Built-in fault tolerance and recovery
- State Management: Actor-based state handling
- Scalability: Distributed execution capabilities
A Node is the fundamental building block of a workflow. Each node:
- Operates as an ergo actor
- Has a unique identifier
- Defines input and output metadata
- Executes specific logic
- Can operate in both synchronous and asynchronous modes
- Returns standardized results
Nodes define their interface through metadata that includes:
- Input parameters with validation rules
- Output specifications
- Edge configuration for connecting nodes
- Parameter schemas with type checking and validation
graph TD
A[Workflow] --> B[Node Actor]
B --> C[Message Handler]
B --> D[State Manager]
B --> E[Supervisor]
C --> F[Input Processing]
C --> G[Output Generation]
D --> H[State Storage]
E --> I[Fault Recovery]
- Actor-Based Architecture: Built on ergo actor model for robust concurrent execution
- Type-Safe Interfaces: Strong typing and validation for node inputs and outputs
- Flexible Execution: Support for both synchronous and asynchronous node execution
- Metadata-Driven: Comprehensive metadata system for defining node interfaces
- Validation Rules: Built-in support for parameter validation with custom rules
- Edge Management: Configurable edge connections between nodes
- Parameter Schemas: Detailed schema definitions for node parameters
- Fault Tolerance: Built-in supervision and recovery mechanisms
- State Management: Actor-based state handling and persistence
The project follows a clean architecture with the following structure:
pkg/workflow
: Core workflow engine implementationpkg/actor
: Actor model implementation using ergopkg/debug
: Debugging utilitiespkg/logic
: Common logic operationspkg/uuid
: UUID generation utilitiesinternal/
: Internal packages (not for external use)cmd/
: Command-line applicationsdocs/
: Documentationexamples/
: Example workflows and usage patterns
FUSE includes several example workflows in the examples/
directory:
- Smallest Test (
smallest-test.json
): A basic workflow demonstrating node connections - Mermaid Test (
mermaid-test.json
): Example of complex workflow visualization - Loop Test (
mermaid-loop-test.json
): Demonstrates loop handling in workflows - Conditional Test (
small-cond-test.json
): Shows conditional branching - Random Branch (
sum-rand-branch.json
): Example of random number generation and branching
- Go 1.24 or later
- Make
- golangci-lint
make build
make test
make lint
Please see ./docs/CONTRIBUTE.md for detailed information about:
- Setting up your development environment
- Code conventions and project structure
- Submitting pull requests
- Commit message guidelines
[License information to be added]
Follow the instructions on SETUP