Ecosystem Setup
Clone the entire VOLT Labs ecosystem and build all plugins with a single command using the CoreToolkit install script.
Overview
CoreToolkit's install script (scripts/install.sh) sets up the entire VOLT Labs ecosystem in one command:
- Clones every VOLT Labs repository, organized into
tools/,plugins/, andapp/directories. - Compiles all Foundational Algorithm plugins into statically-linked binaries inside Docker, ready to use.
Quick Start
curl -sSL https://raw.githubusercontent.com/voltlabs-research/CoreToolkit/main/scripts/install.sh | bashCreates a voltlabs-ecosystem/ directory in the current working directory with the full ecosystem.
Requirements
Runs on Ubuntu / Debian (or Debian-based distros); installs missing system packages via apt:
| Requirement | Minimum version |
|---|---|
| Ubuntu / Debian | Any supported release |
| CMake | ≥ 3.20 |
| C++ compiler | C++23 capable (GCC or Clang) |
| Conan | ≥ 2.0 |
| Docker | Installed and running |
| Python 3 | With pip |
If cmake, conan, or a C++23 compiler are not found, the script attempts to install them automatically.
What the Script Does
Steps run in order:
1. System Verification
- Verifies you're on a supported OS (Ubuntu/Debian).
- Checks and installs base packages:
build-essential,cmake,git,python3,python3-pip,pkg-config,ca-certificates. - Validates CMake ≥ 3.20 and a C++23-capable compiler.
- Installs Conan 2 via pip if not already available.
- Ensures Docker is installed.
2. Clone All Repositories
Cloned into a structured workspace:
voltlabs-ecosystem/
├── tools/
│ ├── CoreToolkit/
│ ├── VoltSDK/
│ ├── SpatialAssembler/
│ ├── HeadlessRasterizer/
│ └── LammpsIO/
├── plugins/
│ ├── StructureIdentification/
│ ├── AtomicStrain/
│ ├── CentroSymmetryParameter/
│ ├── CommonNeighborAnalysis/
│ ├── ClusterAnalysis/
│ ├── CoordinationAnalysis/
│ ├── DisplacementsAnalysis/
│ ├── ElasticStrain/
│ ├── GrainSegmentation/
│ ├── LineReconstructionDXA/
│ ├── OpenDXA/
│ └── PolyhedralTemplateMatching/
└── app/
├── Volt/
└── ClusterDaemon/Existing directories are skipped, so re-running the script is safe and picks up new repositories.
3. Build All Plugins
For each plugin in plugins/, the script runs a Docker-based build using CoreToolkit's Dockerfile.build:
- A
gcc:14-bookwormcontainer installs CMake, Conan, and system dependencies. - CoreToolkit is exported as a Conan package inside the container.
- Each plugin is compiled against CoreToolkit with Release optimizations (
-O3,-mtune=generic, statically linkedlibstdc++andlibgcc). CPU-specific tuning (-march=native) is available but off by default; enable it with-DVOLT_ENABLE_NATIVE_OPTIMIZATIONS=ON. - The resulting binaries are extracted to the output directory.
Configuration
Environment variables:
| Variable | Default | Description |
|---|---|---|
GITHUB_ORG | https://github.com/voltlabs-research | Base URL for cloning repositories |
WORK_DIR | ./voltlabs-ecosystem | Root directory for the ecosystem workspace |
BUILD_OUTPUT_DIR | <script dir>/out (or second argument) | Where compiled plugin binaries are placed |
WORK_DIR=~/my-volt BUILD_OUTPUT_DIR=~/my-volt/bin \
curl -sSL https://raw.githubusercontent.com/voltlabs-research/CoreToolkit/main/scripts/install.sh | bashRebuild Without Cache
Pass --no-cache to rebuild plugin images without the Docker layer cache:
./voltlabs-ecosystem/tools/CoreToolkit/scripts/install.sh --no-cacheRe-running always performs the full pipeline: OS and tooling verification, clone-or-skip per repository, then the Docker-based plugin builds. --no-cache only affects how Docker runs those builds — there is no rebuild-only mode that skips the earlier steps.
Build Output
Compiled plugin binaries land in the output directory (default <script dir>/out/). Each plugin is a standalone executable invoked with positional arguments:
<binary> <input_dump> <output_base> [plugin-specific flags]<input_dump>— path to the LAMMPS dump file to analyse.<output_base>— base path for result files; the binary appends suffixes and writes one or more Apache Parquet files (e.g.<output_base>_cluster_analysis.parquet,<output_base>_atoms.parquet).- Plugin-specific flags vary by algorithm and follow their own conventions (e.g.
--crystal_structure FCC --rmsd 0.1for PTM-based plugins).
Plugins are normally invoked through their Python wrapper scripts, which handle binary location, flag filtering, and output validation.
The Docker-based build currently compiles only the plugin repositories (the Foundational Algorithms). The tools (VoltSDK, SpatialAssembler, etc.) and the app (Volt, ClusterDaemon) are cloned but not built by this script.