Synapse is a vendor-neutral, open-source, and community-driven Workflow Management System (WFMS) designed to implement the Serverless Workflow specification.
It enables developers and organizations to define and execute workflows effortlessly using a high-level, intuitive Domain Specific Language (DSL).
With Synapse, you can create powerful workflows that are cloud vendor-agnostic, easily scalable, and highly customizable.
Synapse is composed of several specialized applications, allowing for atomic scalability, resilience, and ease of maintenance:
For more information about the Synapse architecture, please refer to the wiki. 📖
[Docker]() or [Kubernetes](), depending on the container platform you wish to use.
The simplest way to get started is by using the provided Docker Compose setup.
Clone the Synapse repository:
git clone https://github.com/serverlessworkflow/synapse.git
Navigate to the Docker Compose directory:
cd synapse/deployments/docker-compose
Build the Docker images:
docker-compose build
Start the services using Docker Compose:
docker-compose up
This will pull the necessary Docker images and start the Synapse services as defined in the docker-compose.yml
file. You can then access the Synapse API and dashboard as configured.
For more information about installing Synapse, please refer to the wiki. 📖
synctl
Command-line InterfaceFirst, set up the Synapse API server to use with synctl
:
synctl config set-api default -server=http://localhost:8080
Then, create a new file with the definition of the workflow to create:
# greeter.yaml
document:
dsl: '1.0.0'
name: greeter
namespace: default
version: '0.1.0'
do:
greet:
set:
greetings: '${ "Hello \(.user.firstName) \(.user.lastName)!" }'
Next, run the following command to create the workflow on the API:
synctl workflow create -f greeter.yaml
Finally, run the following command to run the workflow with the specified JSON input:
synctl workflow run greeter --namespace default --version 0.1.0 --input '{\"user\":{\"firstName\":\"John\",\"lastName\":\"Doe\"}}'
The command above will provide the fully qualified name of the created workflow instance. You can utilize this name to inspect its output once the execution is finished, as demonstrated below:
synctl workflow-instance get-output greeter-uk58h3dssqp620a --namespace default --output yaml
For more information about synctl
, please refer to the wiki. 📖
The Synapse project has a vibrant and growing community dedicated to building a community-driven and vendor-neutral workflow runtime ecosystem. Contributions from the community are encouraged and essential to the continued growth and success of the project.
A list of community members who have contributed to Synapse can be found here. 👥
To learn how to contribute to Synapse, please refer to the contribution guidelines. 📝
For any copyright-related questions when contributing to a CNCF project like Synapse, please refer to the Ownership of Copyrights in CNCF Project Contributions document.
As contributors and maintainers of Synapse, and in the interest of fostering an open and welcoming community, we commit to respecting all individuals who contribute through activities such as reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other forms of participation.
The project is committed to making participation in Synapse a harassment-free experience for everyone, regardless of experience level, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
For more detailed information, please see the full project Code of Conduct here. 🛡️