VOLT

Architecture

High-level overview of how all VOLT ecosystem components connect.

System Overview

VOLT is a modular platform for high-performance molecular dynamics simulation analysis. The ecosystem is split into three layers: the web platform, the compute layer, and the shared libraries.

Components

VOLT Platform (Web Application)

The main application, consisting of a React client and an Express server.

ComponentTechnologyPurpose
ClientReact 18, Three.js, Material-UI, Monaco EditorUI, 3D visualization, code editing
ServerExpress 5, Socket.IO, Passport.jsREST API, WebSocket gateway, OAuth
MongoDBMongoose ODMUsers, teams, simulations, analyses
Redisioredis + BullMQJob queues, caching, pub/sub
MinIOS3-compatibleFile storage (dumps, models, plugins, avatars)

The server acts as the control plane: it authenticates users, manages teams, and dispatches analysis jobs to cluster daemons via WebSocket.

ClusterDaemon (Compute Node)

A Node.js service that runs on each compute node (a user's PC or a dedicated server). It connects to the VOLT server over socket.io and executes commands on behalf of the platform.

Responsibilities:

  • Receive and execute analysis jobs (plugin binaries).
  • Manage Docker containers and Jupyter notebook sessions.
  • Parse and rasterize LAMMPS trajectories using native C++ addons.
  • Report metrics (CPU, memory, disk) back to the platform.
  • Handle SSH-based file imports.

The daemon uses the reverse channel pattern — it doesn't expose any HTTP endpoints. Instead, the VOLT server sends commands through the WebSocket, and the daemon responds.

Plugin Binaries (Foundational Algorithms)

Standalone C++ executables compiled against CoreToolkit. Each plugin reads a LAMMPS dump frame, runs a specific analysis algorithm, and writes results in MessagePack format.

There are currently 9 plugins: OpenDXA, AtomicStrain, ElasticStrain, GrainSegmentation, StructureIdentification, ClusterAnalysis, CoordinationAnalysis, CentrosymmetryParameter, and DisplacementsAnalysis.

See Plugin Development for how to build your own.

Shared Libraries

LibraryTypeUsed by
CoreToolkitC++ static libraryAll plugin binaries
LammpsIONode.js native addonClusterDaemon (trajectory parsing)
SpatialAssemblerNode.js native addonClusterDaemon (GLB generation)
HeadlessRasterizerNode.js native addonClusterDaemon (thumbnail rendering)
VoltSDKTypeScript + PythonExternal integrations, scripting

VoltSDK (Client Libraries)

Two client libraries for programmatic access to the VOLT API:

  • @voltstack/voltclient (Node.js/Browser) — Typed HTTP client with auth presets, pagination, and a declarative service DSL.
  • @voltstack/daemon-cluster-client (Node.js) — WebSocket client used by ClusterDaemon to communicate with the VOLT server.
  • voltsdk (Python) — REST client for downloading analysis results, converting MessagePack to DataFrames, and viewing GLB models.

Data Flow: Analysis Execution

Here's how a simulation analysis flows through the system:

Networking

ConnectionProtocolDirection
Client ↔ ServerHTTPS + WSSBidirectional
Server → ClusterDaemonWSS (socket.io)Server initiates commands
ClusterDaemon → ServerWSS (socket.io)Daemon sends heartbeats, results
ClusterDaemon → MinIOHTTP(S)Upload/download artifacts
ClusterDaemon → MongoDBTCPStore analysis metadata
ClusterDaemon → RedisTCPJob queues, caching
ClusterDaemon → DockerUnix socketContainer management

On this page