Quantum-CLI: A powerful CLI to build, run, and test Quantum Machines.
Unifying developers, engineers, and users to build, orchestrate, and automate intelligent workflows with Quantum Machines.
QuantumDatalytica empowers Developers to build modular Quantum Machines, enables Workflow Engineers to design powerful data workflows, and allows Workflow Users to execute and automate tasks seamlessly, all within a secure, scalable, and cloud-native platform.
Workflows are created using DAG-based design, with parent-child machine dependencies and conditional execution logic.
QuantumDatalytica as a unified platform for workflow automation, data processing, and task orchestration using modular, containerized units called Quantum Machines.
Marketplace, the central repository where machines are published, versioned, and reused across workflows and teams, reducing duplication of logic.
Design, build, and publish Quantum Machines to power scalable, reusable, and intelligent automation workflows.
A Machine Developer is a core contributor to the QuantumDatalytica platform, responsible for building, testing, and publishing self-contained units of logic called Quantum Machines. These machines are the foundational building blocks of automated data workflows. They are designed to perform a specific task, such as transforming data, calling APIs, running analytics, or generating documents and are built with consistency, reusability, and scalability in mind.
Machine Developers primarily work in Python, structure their logic around a standardized interface (CoreEngine), and package everything into lightweight Quantum Blocks. Each Quantum Machine must adhere to a defined project.json, input/output schema and is validated through rigorous testing before publication. These machines are then made available to Workflow Engineers and Users, who can plug them into larger Quantum workflows or trigger them as standalone automation tasks.
The role is both creative and technical. Developers have the freedom to innovate, turning domain expertise or unique algorithms into shareable, monetizable machines, while working within a well-structured ecosystem. With Quantum-Machine CLI tools, testing environments, and version control built into the platform, developers can confidently deploy machines that scale across environments.
Whether you're solving a data challenge, building a PDF generator, or integrating external APIs, as a Machine Developer, your work directly empowers automated decision-making and workflow efficiency at scale.
Set up your local tools and environment to begin building, testing, and publishing Quantum Machines efficiently.
Before you begin building a Quantum Machine, it's essential to set up a local development environment that mirrors the runtime environment of the QuantumDatalytica platform. This ensures compatibility, smooth testing, and predictable deployment behavior.
Tool | Purpose | Recommended Version |
---|---|---|
Python | Core language for writing machine logic | 3.9 or higher |
Docker | Core language for writing machine logic | Latest stable |
Git | Source control and version management | Latest |
Quantum CLI | Create, test, validate, and publish machines | Latest from PyPI |
VS Code (or similar IDE) | Code editing and project navigation | Latest |
Quantum-Core-Engine | This package provides the base class CoreEngine, which every machine's main.py must inherit from. It handles the standard execution flow, structured logging, and ensures compatibility with the QuantumDatalytica runtime engine. | Latest |
Once these tools are installed, you're fully equipped to create and run your first Quantum Machine.
Install the Quantum CLI to scaffold, test, and publish Quantum Machines directly from your local environment.
Quantum-Machine CLI is a command-line interface developed by QuantumDatalytica LLC to help developers build, run, test, log, and manage modular analytics components called Quantum Machines. These machines are the foundation of scalable, distributed data workflows within the QuantumDatalytica ecosystem. The CLI streamlines local development and ensures consistent behavior across environments.
pip install quantum-machine
quantum --help
Command | Description |
---|---|
init machine | Initialize a new Quantum Machine project with boilerplate files |
run machine | Run a machine and observe its behavior locally |
build machine | Build a Docker image for the specified machine |
test machine | Run unit tests defined for the machine |
lint machine | Check the machine's code for linting/style issues |
validate machine | Validate the machine's Project.json and required structure |
init workflow | Initialize a new workflow YAML file with DAG structure |
add machine | Add a machine as a task to a workflow and define its dependencies |
run workflow | Run a workflow DAG by executing machines in topological order |
logs machine | View logs from the last execution of a specified machine |
quantum init machine HelloWorld
quantum run machine HelloWorld
quantum build machine HelloWorld
Builds a Docker image with dependencies for the machine.
quantum test machine HelloWorld
Runs the test suite defined under the machine's directory.
quantum lint machine HelloWorld
Applies flake8 or equivalent linting tools to maintain code standards.
quantum validate machine HelloWorld\<file_name>
Ensures the machine has the correct Project.json, required fields, and structure.
quantum init workflow my_workflow
Creates a workflow.yaml file to define machine dependencies.
quantum add machine HelloWord -w my_workflow
quantum add machine 2nd_Machine -w my_workflow
quantum add machine 3rd_Machine -p HelloWorld --workflow my_workflow
quantum add machine 4th_Machine -parent 2nd_Machine -w my_workflow
quantum add machine 5th_Machine -p 3rd_Machine 4th_Machine -w my_workflow
quantum run workflow my_workflow
Executes machines in the correct DAG order as defined in workflow.yaml.
quantum logs machine HelloWord
Displays the logs from the most recent execution of the HelloWorld machine.
Install the core SDK that powers every Quantum Machine and ensures standardized execution, logging, and output handling.
The quantum-core-engine is a required Python package that provides the foundational structure for all Quantum Machines. It must be installed in your development environment before writing or testing any machine logic
https://github.com/QuantumDatalytica-LLC/quantum-core-engine.git@<latest_version>
Run this command inside your virtual environment or project directory to keep dependencies clean and isolated. Replace <latest_version> with the latest version available on the Quantum-Core-Engine Releases page.
The Quantum-Core-Engine is more than just a library, it defines how every Quantum Machine behaves. Its goals include:
Objective | Description |
---|---|
Standardized Execution | Provides a CoreEngine base class that ensures all machines follow a common execution pattern. |
Input Handling | Accepts structured JSON inputs and injects them into your custom logic. |
Output Validation | Ensures outputs are clean, structured, and aligned with the declared schema. |
Logging Support | Built-in logging methods (self.machine_logger.info(), self.machine_logger.error(), self.machine_logger.warning())for easy debugging and traceability. |
Security Hooks | Enforces safe execution policies (e.g., blocking unsafe file paths or unvalidated data access). |
Sandbox Integration | Seamlessly connects to the Quantum CLI and sandbox environment for local testing and validation. |
By using CoreEngine, developers don’t have to reinvent basic execution logic or worry about input/output parsing. They can focus purely on building business logic, while the framework handles the rest, making machines easier to validate, test, and integrate into Quantum Workflows.
from quantum.CoreEngine import CoreEngine
class MyMachine(CoreEngine):
"""
Inherit from CoreEngine to define your machine's logic.
Implement the required methods such as 'receiving', ‘pre_processing’
and many more to handle input and produce output.
"""
if __name__ == "__main__":
# Initialize and execute machine
machine = MyMachine()
machine.start()
Learn how to create, structure, and run your first Quantum Machine using the Quantum CLI toolkit.
Before writing any code, it's important to understand what a Quantum Machine really is: a self-contained, containerized Python base code that takes structured input, performs a task, and returns structured output. Each machine follows a common design pattern, making it predictable, testable, and reusable.
Development starts by using the Quantum Machine CLI to scaffold a new machine with a predefined structure. You'll write your logic in main.py, prepare project.json which defines key parameters of the Quantum Machine, and input.json specifies the expected input parameters for the Quantum Machine, while output.json defines the structure and content of the machine's resulting output.
Use CLI commands to test your machine locally, simulating its execution within the actual Quantum Datalytica runtime environment.
from quantum.CoreEngine import CoreEngine
class MyMachine(CoreEngine):
input_data = {}
dependent_machine_data = {}
def receiving(self, input_data, dependent_machine_data, callback):
"""Receiving
:param input_data: Configure parameter values
:param dependent_machine_data: Dependant/Previous machine data values
:return: callback method to pass data and error into next step
"""
data = {}
error_list = []
try:
# Review Final data and Error list
data = self.get_final_data()
error_list = self.get_error_list()
self.input_data = input_data
self.dependent_machine_data = dependent_machine_data
except Exception as e:
err_msg = f"Error : {str(e)}"
error_list.append(err_msg)
finally:
callback(data, error_list)
def pre_processing(self, callback):
"""Pre-Processing
:return: callback method to pass data and error into next step
"""
data = {}
error_list = []
try:
# Updated Final data and Error list
data = self.get_final_data()
error_list = self.get_error_list()
except Exception as e:
err_msg = f"Error : {str(e)}"
error_list.append(err_msg)
finally:
callback(data, error_list)
def processing(self, callback):
"""Processing
:return: callback method to pass data and error into next step
"""
data = {}
error_list = []
try:
# Updated Final data and Error list
data = self.get_final_data()
error_list = self.get_error_list()
except Exception as e:
err_msg = f"Error : {str(e)}"
error_list.append(err_msg)
finally:
callback(data, error_list)
def post_processing(self, callback):
"""Post-Processing
:return: callback method to pass data and error into next step
"""
data = {}
error_list = []
try:
# Updated Final data and Error list
data = self.get_final_data()
error_list = self.get_error_list()
except Exception as e:
err_msg = f"Error : {str(e)}"
error_list.append(err_msg)
finally:
callback(data, error_list)
def packaging_shipping(self, callback):
"""Packaging & Shipping
:return: callback method to pass data and error into next step, This is
final data to use into next machine
"""
data = {}
error_list = []
try:
# Updated Final data and Error list
data = self.get_final_data()
error_list = self.get_error_list()
except Exception as e:
err_msg = f"Error : {str(e)}"
error_list.append(err_msg)
finally:
callback(data, error_list)
if __name__ == '__main__':
# Create a machine instance and start the process
machine = MyMachine()
machine.start()
from quantum.CoreEngine import CoreEngine
This imports the CoreEngine base class from the Quantum-Core-Engine SDK. Inheriting from CoreEngine standardizes the structure, input/output flow, error handling, and lifecycle of your Quantum Machine.
input_data = {}Dependent_machine_data = {}
input_data: Holds the raw input parameters passed into the machine. These typically come from input.json or are set by the workflow engine.
dependent_machine_data: Captures output from any parent/previous machines in the workflow. Useful when a machine depends on upstream results.
receiving(self, input_data, dependent_machine_data, callback)
This method acts as the initial handshake for the machine’s execution. It captures the raw input and any output from parent machines, setting the stage for downstream logic.
pre_processing(self, callback)
Pre-processing prepares and transforms the initial inputs into a shape more suitable for the main computation. This stage is often used for validation, enrichment, and staging.
processing(self, callback)
This is the core execution phase where the machine performs its primary logic or task.
post_processing(self, callback)
In this phase, the machine performs final adjustments or logging after processing is complete, preparing the output for final packaging.
packaging_shipping(self, callback)
This is the last phase in the lifecycle — it prepares and packages the machine’s output into a structure compatible with QuantumDatalytica’s output schema and downstream machines.
if __name__ == '__main__':
machine = MyMachine()
machine.start()
Connect with peers, join our Slack/Discord community, attend monthly AMAs, and get featured through the Machine Spotlight Program.
Email us at