Tensor network algorithms based on matrix product states (MPS) and matrix product operators (MPO), for (quasi) one-dimensional quantum lattices and two-dimensional statistical mechanics models, as well as quantum circuit simulation or boundary-MPS methods. This library highlights support for both finite systems and systems directly in the thermodynamic limit, and both have a large variety of implemented algorithms.
MPSKit builds on TensorKit.jl for its tensors, which makes abelian, non-abelian, fermionic and anyonic symmetries available throughout. The toolbox covers ground states and leading boundary states, real and imaginary time evolution, excitation spectra, and more.
The documentation contains the manual and the full API reference. The examples work through complete calculations, from ground states to dynamical correlators.
MPSKit is registered in the Julia general registry, and often is best combined with TensorKit.jl and MPSKitModels.jl.
pkg> add MPSKit TensorKit MPSKitModelsTensorKit.jl provides the tensors and their symmetry sectors, and MPSKitModels.jl a library of common operators, Hamiltonians and statistical mechanics models. Symmetries beyond the ones TensorKit itself ships with come from extension packages, such as SUNRepresentations.jl for SU(N).
Sweeping the transverse field of the Ising model in the thermodynamic limit and measuring the magnetization:
using MPSKit, MPSKitModels, TensorKit
using ProgressMeter, Plots # for demonstration purposes
D = 4 # bonddimension
init_state = InfiniteMPS(ℂ^2, ℂ^D)
g_values = 0.1:0.1:2
M = @showprogress map(g_values) do g
H = transverse_field_ising(; g=g)
groundstate, environment, δ = find_groundstate(init_state, H, VUMPS(; verbosity=0))
return abs(expectation_value(groundstate, 1 => σᶻ()))
end
scatter(g_values, M, xlabel="g", ylabel="M", label="D=$D", title="Magnetization")The order parameter vanishes at g ≥ 1, where the chain becomes critical and transitions to the disordered phase.
Replacing the InfiniteMPS with a FiniteMPS and the ground-state algorithm to DMRG runs the same sweep on a finite chain instead; the examples cover that case along with time evolution, excitations and two-dimensional partition functions.
MPSKit is under active development and new algorithms are added regularly.
Questions and general discussion belong on GitHub Discussions, bug reports and feature requests in the issue tracker.
See CONTRIBUTING.md if you would like to contribute code or documentation.
If you use MPSKit.jl in your research, please cite it.
See CITATION.cff for the up-to-date citation metadata, or use the BibTeX entry below.
Please consider citing TensorKit.jl as well. It provides the (symmetric) tensors that MPSKit is built on, and does much of the heavy lifting behind every algorithm here.
@software{mpskitjl,
author = {Devos, Lukas and Van Damme, Maarten and Haegeman, Jutho},
title = {{MPSKit.jl}},
version = {v0.13.13},
doi = {10.5281/zenodo.10654900},
url = {https://github.com/QuantumKitHub/MPSKit.jl},
year = {2026}
}
@article{tensorkitjl,
author = {Devos, Lukas and Haegeman, Jutho},
title = {{TensorKit.jl}: A Julia package for large-scale tensor computations, with a hint of category theory},
journal = {arXiv preprint arXiv:2508.10076},
doi = {10.48550/arXiv.2508.10076},
year = {2025}
}