The StringJAX project: Compiling String Theory
Differentiable tools for string compactifications in JAX.
StringJAX is the umbrella project for a family of interoperating, separately
versioned and separately citable Python packages. This repository hosts the
lightweight stringjax metapackage (a one-command installer and an environment
helper) and the documentation hub. It contains no physics code — that lives in
the member packages below.
Why StringJAX?
Constructing and analysing string-theory vacua has traditionally meant stitching together bespoke scripts, incompatible data formats, and slow, non-differentiable numerics. StringJAX exists to make that pipeline fast, differentiable, and reproducible from end to end. Every member package is built on JAX, so the same code runs on CPU, GPU, or TPU and exposes exact gradients through the whole geometry → effective theory → moduli-stabilisation chain. The packages are small, single-purpose, and independently versioned, so you install only what you need and cite exactly what you used.
Install
pip install stringjax # CPU; JAXVacua engine + CYTools + bundled models
pip install "stringjax[all]" # + databases (StringForge) and the flux-bounding extra
GPU/TPU/Apple-Silicon need one extra step for JAX — see the installation guide.
Note:
stringjaxis permissively licensed (MIT), but using the ecosystem pulls injaxvacua, which is GPL-3.0; your usage is subject to those terms.
Packages
| Package | Role | Install | Docs | GitHub |
|---|---|---|---|---|
| JAXVacua | Type IIB flux-vacuum engine | pip install jaxvacua |
DOC | (GitHub) |
| JAXPolyLog | Differentiable polylogarithms | pip install jaxpolylog |
DOC | (GitHub) |
| StringForge | Calabi–Yau databases & vacua vault | pip install stringforge |
DOC | (GitHub) |
StringJAX itself is the project/brand and is not an installable physics package.
First five minutes
import jaxvacua as jvc
jvc.set_precision("float64") # before heavy compute
model = jvc.FluxEFT(h12=2, model_ID=1, limit="LCS", maximum_degree=5)
finder = jvc.FluxVacuaFinder.from_model(model)
vacua = finder.sample_SUSY_flux_vacua(N=100, mode="ISD")
print(len(vacua), "candidate vacua")
Check your environment at any time:
stringjax doctor # versions, JAX backend/devices, float64 status, Gurobi availability
stringjax versions # just the member-package versions
Documentation
The documentation hub lives at https://stringjax.readthedocs.io. Each member package has its own authoritative documentation; the hub orients newcomers and links into them.
Roadmap & long-term goals
StringJAX is released incrementally, and the umbrella is deliberately thin so that member packages can evolve at their own pace.
- Near term — stabilise the JAXVacua flux-vacuum engine and its public API, publish archival releases with DOIs, and grow the StringForge data layer.
- Medium term — broaden coverage of the low-energy effective theory (the Kähler sector and α′/string-loop corrections, axion physics, and uplift scenarios) as further member packages that plug into the same differentiable interfaces.
- Long term — a unified, differentiable environment in which large regions of the landscape can be sampled, optimised, and connected to phenomenology and machine-learning workflows, with strong interoperability and reproducibility guarantees across the ecosystem.
The about page sets out the motivation and strategy in more detail; the compatibility matrix tracks current version windows.
Citing
Please cite the specific package(s) you used rather than the umbrella; see
CITATION.cff and each member's citation file. BibTeX entries are
collected in the documentation.
Contributing
See CONTRIBUTING.md and the
code of conduct. Questions are welcome in GitHub Discussions.
Release files for stringjax 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| stringjax-0.1.0.tar.gz | 45.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| stringjax-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.5 kB
Release files / stringjax-0.1.0.tar.gz
| Download URL | stringjax-0.1.0.tar.gz |
|---|---|
| Size | 45.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a0817d46f635224ef3e35d806f5be3222349ccde4ec079bfb835050699b7244
|
|
BLAKE2b-256 checksum How to use checksums |
700157af5889795c2795cb75b8d1481d836a4190380d8ab81a9e98f57ab5620e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|
Release files / stringjax-0.1.0-py3-none-any.whl
| Download URL | stringjax-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8c46c639bfdc465e04c3d765de02196052ce10b101cf88604142d5f16831e1da
|
|
BLAKE2b-256 checksum How to use checksums |
65b617d0837683fbed4e0fc0544da5187ff53f174f7d874418889779d13a22f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.9
|