Ararat is a high-performance, logically centralized orchestration framework for Software-Defined Workflows (SDW). Built in the Mojo programming language, it leverages Directed Hypergraphs (DHG) to model and execute complex, distributed closed-loop systems—specifically optimized for neuromodulation control systems.
Ararat is inspired by Software-Defined Networking (SDN), separating the Control Plane (Orchestration) from the Data Plane (Service Execution). This allows for:
- Directed Hypergraphs (DHG): Moving beyond the constraints of DAGs to support cycles, feedback loops, and 1-to-many hyperedges.
- Logically Centralized Control: A unified orchestrator manages the workflow state while data flows orthogonally between distributed services.
- Heterogeneous Execution: Native support for polyglot services running in Docker, Singularity, or as local processes.
- Dynamic Adaptability: Real-time "Hot-Swap" of workflow topologies without resetting service context.
Unlike traditional workflow engines (Nextflow, Snakemake) that are limited to Directed Acyclic Graphs, Ararat natively supports Dicycles. This is critical for biomedical control systems where continuous feedback loops (e.g., Plant Model
Supports both Blocking (Synchronous) and Non-Blocking (Asynchronous) signaling. "Thin Edges" allow nodes to continue execution while receiving fire-and-forget state updates, preventing bottlenecks in high-frequency data streams.
Built-in ServiceLauncher capable of orchestrating:
- Cloud-Native: Dockerized microservices.
- HPC-Native: Singularity (Apptainer) containers for research clusters.
- Local: Standalone Mojo/Python scripts.
The Orchestrator can ingest new JSON definitions during an active run, re-routing hyperedges and altering the control logic with zero downtime.
Ararat/
├── ararat/
│ ├── core/ # DHG Primitives (Nodes, Hyperedges)
│ ├── controller/ # Logically Centralized Orchestrator
│ ├── infra/ # Container Launchers & JSON Parsers
│ ├── sim/ # Closed-loop case studies & benchmarks
│ └── optimization/ # Resource & Bandwidth allocation heuristics
├── workflows/ # JSON-based DHG definitions
└── main.mojo # Entry point
- Mojo SDK
- Python 3.x (for JSON parsing and subprocess management)
- Docker (Optional, for containerized services)
Ararat includes a research-grade case study of a Neuromodulation Control Loop:
# Run the complete verification suite
mojo run main.mojo