UnifiedLab is a high-performance orchestration engine designed for scientific workflows. It combines the reliability of Rust with the flexibility of Python-based active learning agents, all controlled via a visual Draw.io interface.
- Visual Workflow Design: Design your experiments as flowcharts in Draw.io.
- Hybrid Orchestration: Seamlessly manage HPC jobs (VASP, GULP, Janus) and AI Agents.
- Active Learning: Agents can dynamically spawn new simulations based on results.
- Resilience: Built-in checkpointing and crash recovery.
- TUI Dashboard: Real-time monitoring of your cluster and job queues.
UnifiedLab requires Rust (for the core) and uv (for Python environment management).
- Install Rust: rustup.rs
- Install Just: just.systems (Command runner)
- Install uv: astral.sh/uv (Fast Python package manager)
Clone the repository and run:
just setupThis will:
- Check your Rust installation.
- Set up a Python virtual environment with
uv. - Install necessary Python drivers (
numpy, etc.).
Start the UnifiedLab Node Service (Guardian + Coordinator). By default, it runs in "Local Mode" for testing.
just start- Open Draw.io or the desktop app.
- Create a flowchart:
- Rectangle: Represents a Compute Job.
- Arrows: Represent Dependencies (A -> B means B runs after A).
- Label: The name of the job. Include "Janus" in the name to use the GPU engine.
- Important: Save the file as Uncompressed XML (
.drawio).- File > Export as > XML > Uncheck "Compressed"
Submit your .drawio file to the running service:
just deploy file="my_experiment.drawio"(Or use the included example: just deploy)
Launch the Terminal User Interface (TUI) to watch your jobs execute in real-time:
just tuiThe system infers the "Engine" (Solver) from the job name/label:
- Janus: GPU-accelerated ML Potential (Label contains "janus").
- Agent: Python script for decision making (Default).
- GULP / VASP: (Mock implementations available for testing).
- Build:
just build - Test:
just test - Format:
just fmt - Clean:
just clean
See TODO.md for a list of planned improvements.