🏠 Home of ThereminQ - QuantumOPS ⚛️ a Cloud ☁️ Native Toolbox ⚒️ for Quantum Workloads 👷 and Visualisations 🖼️
This repository serves as the central build system for the ThereminQ - QuantumOPS project, a comprehensive, cloud-native toolbox for quantum computing workloads and visualizations. It is designed to automate the build process for a suite of Docker container images, each containing a specific component of the ThereminQ ecosystem. The project leverages a Docker-in-Docker (dind) approach to create a self-contained build environment capable of producing a wide range of container images for quantum simulations, AI agent integration, and more.
The ThereminQ - QuantumOPS ecosystem is composed of several key components, each housed in its own repository and built as a distinct Docker container image. These components are:
twobombs: The core repository containing the build system itself. It orchestrates the building of all other componentsdeploy-nvidia-docker: A utility for enabling GPU acceleration within Docker, setting up the NVIDIA Docker Desktop UIcudacluster: A component for creating and managing CUDA & ROCm clusters for distributed GPU computing tasksqrackmin: A HPC QC package with support for various backends, including CUDA, OpenCL (pocl), Qiskit, AWS BraKET etc.thereminq-classiq: Integration with theClassiqplatform for quantum algorithm design leveragingCandOpenCLthereminq-bonsai: Integration with the Bonsai platform for visualisations inThereminQ-Classicthereminq-tensors: Focused on tensor network simulations for quantum circuits and much larger and complex systemsthereminq-llama: Integration with large language models (LLMs) providing AI agent capabilitiesthereminq-pqc: A component for experimenting with Post-Quantum Cryptography solutionsthereminq-examples: A collection of examples demonstrating how to use the various components of theThereminQsuite
The build system is designed to be self-contained and automated, using a Docker-in-Docker (dind) approach. The key components of the build system are:
-
Dockerfile: This file defines the build environment. It starts with a base image containing Docker (cruizba/ubuntu-dind), installs necessary dependencies likedocker-buildxandgit, and clones all the component repositories into the/builddirectory. -
buildall.sh: This is the main orchestration script. When executed, it performs the following steps:- Sets up a local Docker registry and a web UI for browsing the registry.
- Builds the main
twobombs/twobombsbuilder image using theDockerfile. - Starts the build process for each component in separate, detached Docker containers. Each container uses the
twobombs/twobombsimage and runs a specific build script (e.g.,qrackmin.sh,thereminq-llama.sh).
-
Component Build Scripts (
runfiles/*.sh): Each component has its own build script located in therunfilesdirectory. These scripts contain the specificdocker buildcommands and logic required to build the container images for that component. -
publish-*.shScripts: These scripts are used to publish the built container images from the local registry to Docker Hub. They pull the images from the local registry, retag them with the appropriate Docker Hub repository name, and then push them.
To use the build system to build all the ThereminQ - QuantOPS container images, follow these steps:
-
Clone the repository:
git clone https://github.com/twobombs/twobombs.git cd twobombs -
Run the
buildall.shscript:docker run -ti --privileged --net=host twobombs/twobombs bash buildall.sh
This command will start the build process. The
-tiflags allocate a pseudo-TTY and keep stdin open,--privilegedis required for Docker-in-Docker, and--net=hostallows the containers to share the host's network. -
Monitor the build process: You can monitor the build process by viewing the logs of the individual build containers. Use
docker psto list the running containers anddocker logs -f <container_name>to view the logs of a specific container. -
Browse the local registry: Once the builds are complete, the container images will be available in the local Docker registry. You can browse the registry by opening a web browser and navigating to
http://localhost. -
Publish the images (optional): To publish the images to Docker Hub, you will need to have Docker Hub credentials configured on your machine. Then, you can run the appropriate
publish-*.shscript to publish the images for a specific component. For example, to publish theqrackminimages, you would run:./publish-qrackmin.sh
- 🔭 I’m currently working on QC Circuit simulations and PQC PoCs
- 💬 Ask me about Quantum AI-Agents, Quantum Chemistry and fast scrambling for Great Benefit of Glorious Iterations
- 📫 How to reach me: Twitter
- ⚡ Fun facts: Twobombs is a BBS handle and derives from an arcane exception on the AtariST - my Discord (modern BBS)
Need advice on ThereminQ QuantOPS QC/AI integrations ?https://calendar.google.com/calendar/u/0/appointments/AcZssZ0AingtQt8lYRrXClamCE3Qo5V76hKk3oibR9s=
Some of the agents & models that are used in some of the container images are sometimes modified and/or quantized for their specialized purpose and are pulled at build- and runtime from the Huggingface repo for ThereminQ
ThereminQ is a Software and Hardware simulation stack made from a huge number of open source projects - Any and all rights belong to the respective owners
If (your) code resides in any of these container images and you don't want that please let me know




