Lightweight. Fast.
DFT, tight binding, and machine learning potentials (MLIP) all in one place.Try on web ↗
Caffeine benchmarks
24 atoms · energy + forces
Apple M4 Max · CPU
DFT qc.rs ↗
PBE / def2-SVP
9.1× faster
vs PySCF
Atomli1.70 s
PySCF15.5 s
Atomli394 MiB
PySCF3.87 GiB
Tight binding ctb.rs ↗
GFN2-xTB
3× faster
vs tblite
Atomli3.89 ms
tblite11.7 ms
Atomli86.6 MiB
tblite85.2 MiB
MLIP mlip.rs ↗
Nequix MP-1 PFT
1.7× faster
vs Nequix / JAX
Atomli7.78 ms
Nequix / JAX12.8 ms
Atomli172 MiB
Nequix / JAX793 MiB
DFT / MLIP: Atomli 0.1.4 · xTB: Atomli 0.1.6 · development build, 2026-09-20 · DFT / xTB: 8 threads · MLIP: 1 thread
NVIDIA A100 · 40 GB
DFT qc.rs ↗
PBE / def2-SVP
1.3× faster
vs GPU4PySCF
Atomli717 ms
GPU4PySCF927 ms
Atomli657 MiB
GPU4PySCF1.19 GiB
DFT qc.rs ↗
r²SCAN / def2-SVP
1.7× faster
vs GPU4PySCF
Atomli710 ms
GPU4PySCF1.22 s
Atomli782 MiB
GPU4PySCF1.19 GiB
MLIP mlip.rs ↗
Nequix MP-1 PFT
2.7× faster
vs Nequix / JAX
Atomli3.28 ms
Nequix / JAX9.01 ms
Atomli398 MiB
Nequix / JAX1.69 GiB
DFT: Atomli 0.1.5 · development build, 8 host threads · MLIP: Atomli 0.1.4, 1 host thread
from atomli.io import readfrom atomli.calculators import XTBfrom atomli.optimize import BFGS
atoms = read("caffeine.xyz")atoms.calc = XTB(method="gfn2")BFGS(atoms).run(fmax=0.05)
print(atoms.get_potential_energy())Guides
Section titled “Guides”Calculators DFT, tight binding, machine learning potentials, and classical models.Structure optimization Optimizers, force tolerance, and constraints.Benchmarks Calculation time and peak RSS on CPU and GPU.API reference Classes, functions, and methods.
ASE interoperability
Section titled “ASE interoperability”Use Atomli calculators with ase.Atoms, or assign an ASE calculator to atomli.Atoms.
Read the compatibility guide before you migrate a workflow.
Python boundary units are angstrom, electronvolt, and femtosecond. See units for conversions and calculator guides for supported properties.