License + bundled-data inventory

vibe-qc is distributed under the Mozilla Public License 2.0. The full license text lives in the repository root as LICENSE.

This page covers three related but distinct things, in the order users tend to ask:

  1. vibe-qc’s own license (your right to use it).

  2. Linked native libraries (whose licenses transitively bind any binary distribution of vibe-qc).

  3. Bundled data — basis sets, ECP libraries, and external structures / reference data fetched by vqfetch.

If you want the legal short version: vibe-qc itself is MPL 2.0 and you can use it freely in academic and commercial work. The combined binary that links FFTW3 is effectively GPL v2 (the restriction comes from FFTW, not from us); see FFTW: GPL v2 dependency below.

1. vibe-qc’s own license — MPL 2.0

vibe-qc’s source code is released under the Mozilla Public License Version 2.0. What that means in practice:

  • You can use vibe-qc in commercial and non-commercial projects.

  • If you modify vibe-qc’s own source files and redistribute them, your modifications to those files must be released under MPL 2.0. You don’t have to open-source code that merely uses vibe-qc.

  • No patent traps: MPL 2.0 includes an explicit patent grant.

  • No warranty — see the license text for the usual limitations of liability.

  • MPL 2.0 is GPL-compatible (vibe-qc has no “Incompatible With Secondary Licenses” notice), so vibe-qc source can be combined with GPL’d code into a “Larger Work” under MPL 2.0 § 3.3.

2. Linked native libraries

vibe-qc dynamically links the following native libraries at runtime. Their licenses transitively bind any binary distribution of vibe-qc.

Library

License

Source

Linkage

libint

LGPL 3.0 (library) + GPL 3.0 (compiler)

LICENSE

dynamic

libxc

MPL 2.0

COPYING

dynamic

Eigen

MPL 2.0

COPYING.MPL2

header-only

spglib

BSD 3-Clause

COPYING

dynamic

pybind11

BSD 3-Clause

LICENSE

header-only

FFTW3

GPL v2 or later (commercial alt available)

License

dynamic

libecpint

MIT

LICENSE

dynamic

libcerf (in libecpint)

MIT

LICENSE

static (in libecpint)

pugixml (in libecpint)

MIT

LICENSE.md

static (in libecpint)

BLAS — Apple Accelerate (macOS, default)

Apple SDK license (system-bundled)

shipped with macOS, no redistribution

dynamic (framework)

BLAS — OpenBLAS (Linux, recommended; system or vendored)

BSD 3-Clause

LICENSE

dynamic

BLAS — reference netlib BLAS (Linux fallback)

modified BSD

LICENSE

dynamic

LAPACK + LAPACKE — Reference-LAPACK (Linux; bundled inside OpenBLAS when vendored)

modified BSD

LICENSE

dynamic

Note on vendored OpenBLAS (opt-in via WITH_OPENBLAS=1 ./scripts/setup_native_deps.sh — see installation): when built from source into third_party/openblas/install/, the resulting libopenblas.so bundles netlib LAPACK’s Fortran sources + the LAPACKE C interface. Both inherit OpenBLAS’s BSD 3-Clause license (it is the redistributed work). Net license posture is unchanged from a system-installed OpenBLAS — fully compatible with MPL 2.0.

Compatibility summary:

  • MPL 2.0 (libxc, Eigen, vibe-qc itself) — fully compatible.

  • BSD 3-Clause (spglib, pybind11, OpenBLAS) — fully compatible (permissive).

  • Modified BSD (reference LAPACK / LAPACKE / netlib BLAS) — fully compatible (permissive, with a no-endorsement clause).

  • MIT (libecpint, libcerf, pugixml) — fully compatible (permissive).

  • LGPL 3.0 (libint library) — compatible via dynamic linking, which is the LGPL’s intended use. Static linking would require either (a) supplying object files for relinking or (b) releasing the whole work under LGPL. We dynamic-link; no static-linking case exists.

  • GPL v2 or later (FFTW3) — see warning below.

  • Apple SDK license (Accelerate framework, macOS-only) — the framework ships with macOS, is not redistributed with vibe-qc, and is only linked when vibe-qc itself is built and run on macOS. No transitive license burden.

FFTW: GPL v2 dependency — the binary distribution caveat

This matters for you only if you want to redistribute vibe-qc binaries (or a bundled application that embeds vibe-qc). It does not affect:

  • Academic users running vibe-qc on their own data.

  • Source-code distribution of vibe-qc itself (still MPL 2.0).

  • Modifying vibe-qc and using your modified version internally.

But it does affect:

  • Anyone shipping a precompiled binary of vibe-qc (including Conda / PyPI wheels that bake in libfftw3.so) — the combined binary is effectively GPL v2 or later because FFTW’s GPL terms govern the linked work.

  • Anyone wanting to embed vibe-qc in a closed-source product.

The mechanism is standard GPL-vs-MPL combination: vibe-qc’s MPL 2.0 source is GPL-compatible (no “Incompatible With Secondary Licenses” notice), so the combined work can be distributed, but recipients receive the combined work under both MPL (for the vibe-qc parts) and GPL (for the whole combined binary, because FFTW dominates).

FFTW commercial license: MIT’s Technology Licensing Office sells a non-GPL commercial FFTW license (see FFTW License page). This is an option for commercial redistribution, but the price makes it impractical for hobby projects.

Roadmap: a future minor release will add a build-time option to swap FFTW3 for pocketfft (BSD 3-Clause) or KissFFT (BSD 3-Clause) so binary distribution can be GPL-free for commercial users. Tracked as roadmap entry “FFT backend abstraction” in docs/roadmap.md (post-v1.0 milestone).

3. Bundled data

vibe-qc ships several kinds of data alongside the source:

  • Basis sets in python/vibeqc/basis_library/ (basis/ from libint upstream + custom/ for vibe-qc’s pob-* additions).

  • ECP libraries in third_party/libecpint/install/share/libecpint/xml/ (Stuttgart-Köln MDF + LANL families).

  • Reference data fetched at runtime by vqfetch (no bundled data; pulled on demand from external sources).

  • MACE foundation-model weights fetched at runtime by the optional [mace] extra (no bundled data; pulled on demand into the XDG cache). Covered in MACE below.

Each is covered separately.

MACE — optional ML interatomic potential ([mace] extra)

method="mace" interfaces ACEsuit MACE, a pre-trained machine-learning interatomic potential, via the optional [mace] extra (pip install 'vibe-qc[mace]'). MACE is not in the default install and is not linked into the vibe-qc binary — none of the licenses below bind a normal vibe-qc distribution; they apply only to a user who opts in. (Python ≤3.13 only; see the roadmap MACE entry.)

Code — the [mace] extra pulls these Python packages:

Package

License

mace-torch

MIT

PyTorch

BSD-3-Clause

e3nn

MIT

All permissive and MPL-2.0-compatible.

Foundation-model weights — fetched on demand, never bundled. The MACE code is MIT, but the trained weights are licensed separately and download on first use into the XDG cache (~/.cache/mace/, the vqfetch-style on-demand pattern); vibe-qc ships none of them:

Model family

License

Commercial use

MACE-MP-0 / MPA-0 (materials)

MIT

✅ yes

MACE-OFF23 (organic)

ASL

❌ academic only

MACE-OMAT-0 / MATPES / MH / MDP

ASL

❌ academic only

The Academic Software License (ASL) is a GPLv2-derived non-commercial license. vibe-qc’s default model is the MIT MACE-MPA-0, and the current implementation wires only that model — so no ASL weights can be fetched yet. A later milestone (M2) adds per-model selection with the ASL models gated behind an explicit non-commercial acknowledgment, so a commercial user cannot pull them inadvertently. Citation: a method="mace" run auto-emits the MACE method paper + the foundation-model paper to its .bibtex / .references — cite them in published work.

3a. Bundled basis sets

python/vibeqc/basis_library/
├── basis/         ← assembled from libint 2.13.1 upstream + custom overlay
├── custom/        ← source of truth for vibe-qc's own additions
└── README.md

basis/ — inherited from libint 2.13.1

The 142 .g94 files in basis/ are a curated subset of the 450+ basis sets that ship in the libint 2.13.1 upstream distribution at share/libint/2.13.1/basis/. We inherit libint’s distribution decisions: if libint ships a basis set, vibe-qc redistributes it under the same terms libint redistributes it under (LGPL 3.0 for the library, basis sets themselves typically inherited from the Basis Set Exchange).

Citation requirement. The .g94 file headers preserve the original publication references (e.g. ANO-RCC carries a 6-line reference list naming Widmark, Roos, Malmqvist, Veryazov, Lindh). Users must cite the originating publication for any basis set used in published work — this is a community norm, not a license requirement. The vibe-qc reflexive vibeqc.print_banner() does not currently print the basis-set citation; printing it is queued as a v0.x.x roadmap item.

Per-family citation hints (extend with the .g94 file’s own header for the authoritative reference):

Family

Per-family citation

sto-Ng

Hehre, Stewart, Pople, J. Chem. Phys. 51, 2657 (1969)

6-31g family

Hehre, Ditchfield, Pople, J. Chem. Phys. 56, 2257 (1972); Hariharan, Pople, Theor. Chim. Acta 28, 213 (1973)

6-311g family

Krishnan, Binkley, Seeger, Pople, J. Chem. Phys. 72, 650 (1980)

cc-pVxZ family

Dunning, J. Chem. Phys. 90, 1007 (1989); Kendall, Dunning, Harrison, J. Chem. Phys. 96, 6796 (1992)

def2 family

Weigend, Ahlrichs, Phys. Chem. Chem. Phys. 7, 3297 (2005); Weigend, Phys. Chem. Chem. Phys. 8, 1057 (2006)

ANO-RCC family

Multiple — see the per-element references inside basis/ano-rcc.g94

RIFIT / JKFIT auxiliaries

Weigend, Phys. Chem. Chem. Phys. 8, 1057 (2006); Hellweg et al. Theor. Chem. Acc. 117, 587 (2007); Eichkorn et al. Theor. Chem. Acc. 97, 119 (1997)

custom/ — vibe-qc’s own additions (Bredow-group pob suite)

Three custom basis sets ship in custom/. These are originated by Mike Peintinger (vibe-qc’s author / current maintainer) and Tilo Bredow’s group at the University of Bonn, either as PhD work or as collaborator-level contributions. No external license clearance is required.

File

Citation

pob-tzvp.g94

M. F. Peintinger, D. Vilela Oliveira, T. Bredow, J. Comput. Chem. 34, 451 (2013). DOI:10.1002/jcc.23153

pob-dzvp-rev2.g94

D. Vilela Oliveira, J. Laun, M. F. Peintinger, T. Bredow, J. Comput. Chem. 40, 2364 (2019). DOI:10.1002/jcc.26013

pob-tzvp-rev2.g94

J. Laun, T. Bredow, J. Comput. Chem. 42, 1064 (2021). DOI:10.1002/jcc.26521

Source URL (Bredow group archive): https://www.chemie.uni-bonn.de/bredow/de/software/pob-tzvp-tar.gz. The bundled .g94 files reproduce this archive’s content with minor formatting normalisation.

BSE-fetched basis sets — v0.9.0 (148 .g94 files from the Basis Set Exchange)

The basissetdev branch carries 148 basis-set .g94 files in python/vibeqc/basis_library/custom/ fetched from the Basis Set Exchange (BSE) on 2026-05-08, now shipping in v0.9.0.

Attribution — our obligations

Although the data are not copyright-encumbered, scientific attribution is mandatory. Every .g94 file shipped by vibe-qc carries a header crediting the BSE source and (where available) the originating publication. Users are required to cite the originating publication for any basis set they use in published work; the canonical references are surfaced through the citation database at python/vibeqc/output/citations/database.toml (route basis_sets).

Publisher policies for supporting information

All 148 files originate from peer-reviewed publications whose supporting information (SI) includes the basis-set parameters:

Publisher

SI redistribution policy

Representative journals

American Chemical Society (ACS)

SI is supplementary material accompanying the article; redistribution of factual data within SI is standard practice

J. Chem. Theory Comput., J. Phys. Chem., J. Am. Chem. Soc.

American Institute of Physics (AIP)

SI is part of the published record; AIP’s author rights permit reuse of factual data

J. Chem. Phys.

Wiley

SI accompanies the article; redistribution of extracted data is standard in the field

J. Comput. Chem., Int. J. Quantum Chem., Angew. Chem.

Royal Society of Chemistry (RSC)

SI is supplementary material; RSC’s author re-use rights cover factual data

Phys. Chem. Chem. Phys.

Springer / Czech Academy

SI data is part of the published record

Theor. Chem. Acc., Collect. Czech. Chem. Commun.

Per-family inventory

Family

Files

First author (year)

Journal

Publisher

Jensen pcseg-{0..4}, aug-pcseg-{0..4}

10

Jensen (2014)

JCTC

ACS

Jensen pc-{0..4}, aug-pc-{0..4}

10

Jensen (2001–2002)

J. Chem. Phys.

AIP

Pople diffuse (6-31+G**, 6-311+G**, etc.)

5

Ditchfield/Hehre/Pople (1971); Frisch/Pople/Binkley (1984)

J. Chem. Phys.

AIP

Pople RI-J auxiliary

2

Weigend (2006)

PCCP

RSC

Karlsruhe def2 3c carriers

2

Brandenburg et al. (2018)

J. Chem. Phys.

AIP

Karlsruhe dhf-* (Dirac-Hartree-Fock)

6

Weigend/Baldes (2010)

J. Chem. Phys.

AIP

Karlsruhe x2c-* (exact two-component)

3

Pollak/Weigend (2017)

JCTC

ACS

Grimme vDZP (omegaB97X-3c carrier)

1

Muller/Hansen/Grimme (2023)

J. Chem. Phys.

AIP

LANL ECP family

6

Hay/Wadt (1985)

J. Chem. Phys.

AIP

Dunning cc-pV(n+d)Z + aug-

5

Dunning/Peterson/Wilson (2001)

J. Chem. Phys.

AIP

Dunning jul-/jun-cc-pV(n+d)Z

4

Papajak/Truhlar (2010)

JCTC

ACS

Dunning cc-pCV*Z + aug-

6

Woon/Dunning (1995)

J. Chem. Phys.

AIP

ANO-RCC contracted

5

Roos et al. (2004)

J. Phys. Chem. A

ACS

ANO-R (Zobel-Widmark-Veryazov)

5

Zobel et al. (2020)

JCTC

ACS

Sadlej pVTZ / Sadlej+

2

Sadlej (1988)

Collect. Czech. Chem. Commun.

Czech Acad.

Jensen pcS-{0..3}, aug-pcS-{1,2}

6

Jensen (2008)

JCTC

ACS

Jensen pcSseg-{0..2}

3

Jensen (2015)

JCTC

ACS

Jensen pcJ-{0..3}

4

Jensen (2006)

JCTC

ACS

Sapporo-DKH3-{DZP,TZP,QZP}

3

Noro/Sekiya/Koga (2012)

Theor. Chem. Acc.

Springer

Cologne DKH2

1

Dolg et al.

SARC-DKH2 / SARC2-QZ*

3

Pantazis/Neese (2009, 2019)

JCTC

ACS

All 142 BSE-fetched files (plus 3 pob- vibe-qc files, separate): numerical data from peer-reviewed publications. Redistribution of basis-set parameters is the established norm in computational chemistry; no file is encumbered by a license that prohibits redistribution as part of a QC code.*#### SAP atomic-potential helpers

Two additional .g94 files in basis/ are not orbital basis sets — they are tabulated Gaussian expansions of the radial atomic effective potentials used by the Superposition of Atomic Potentials (SAP) initial guess (InitialGuess.SAP, see docs/roadmap.md §G2c). The .g94 container is a convenience: the same loader can read both, but consuming these files as an orbital basis would produce nonsense by design — the test suite guards against that via SAP_PREFIXES = ("sap_",) in tests/basisset_dev/test_basis_library_load.py.

File

Reference radial potential

Use

sap_helfem_large.g94

All-electron, Helfem fully-numerical atomic SCF

non-relativistic default for InitialGuess.SAP

sap_grasp_large.g94

Relativistic Dirac–Hartree–Fock, GRASP

optional default for x2c / DKH calculations

Citation:

S. Lehtola, L. Visscher, E. Engel, Efficient Implementation of the Superposition of Atomic Potentials Initial Guess for Electronic Structure Calculations in Gaussian Basis Sets, J. Chem. Phys. 152, 144105 (2020). DOI:10.1063/5.0004046

The reference is preserved verbatim in each .g94’s file header. Published — redistributable under standard scientific- data conventions; users must cite the originating publication when reporting energies obtained with the SAP initial guess.

3b. Bundled ECP libraries

third_party/libecpint/install/share/libecpint/xml/
├── ecp10mdf.xml      ← Stuttgart-Köln MDF, 10-electron core
├── ecp28mdf.xml      ← Stuttgart-Köln MDF, 28-electron core
├── ecp46mdf.xml      ← Stuttgart-Köln MDF, 46-electron core
├── ecp60mdf.xml      ← Stuttgart-Köln MDF, 60-electron core
├── ecp78mdf.xml      ← Stuttgart-Köln MDF, 78-electron core
└── lanl2dz.xml       ← Los Alamos LANL2DZ

These XML files ship inside the libecpint distribution (MIT-licensed, by Robert A. Shaw). vibe-qc inherits them by linking libecpint and pointing at libecpint’s data directory at runtime. No additional clearance or redistribution decision is made by vibe-qc — we ship what libecpint ships.

Citation requirement (community norm, not legal):

ECP family

Citation

Stuttgart-Köln MDF (ecp10mdfecp78mdf)

Originally: Andrae, Häußermann, Dolg, Stoll, Preuß, Theor. Chim. Acta 77, 123 (1990) and family. Per-element references in libecpint’s source repository.

LANL2DZ (lanl2dz)

Hay, Wadt, J. Chem. Phys. 82, 270 (1985); 299 (1985); 284 (1985).

libecpint software

R. A. Shaw, J. G. Hill, J. Chem. Phys. 147, 074108 (2017); Shaw, J. Chem. Phys. 159, 014103 (2023).

3c. Dispersion-correction source — fully native, MPL 2.0

vibe-qc ships its own implementation of the EEQ atomic-charge model (cpp/include/vibeqc/eeq_charges.hpp + cpp/src/eeq_charges{,_data}.cpp), written from the published equations in

  • Caldeweyher, Ehlert, Hansen, Neugebauer, Spicher, Bannwarth, Grimme, J. Chem. Phys. 150, 154122 (2019), supporting information.

Per-element EEQ parameter values (χ, η, κχ, γ) are scientific data transcribed from the above paper’s Table S2. Covalent radii are from Pyykkö & Atsumi, Chem. Eur. J. 15, 188 (2009). Numerical values from published scientific data are not subject to expressive copyright; vibe-qc cites the original papers in the relevant headers (cpp/src/eeq_charges_data.cpp) and in any user-facing output that quotes EEQ charges.

The Grimme-group reference Fortran implementations (multicharge, Apache-2.0; mctc-lib, LGPL-3.0-or-later) were consulted during development for cross- validation; no source from either was copied into the tree, and all files in vibe-qc carry the project’s MPL-2.0 SPDX header.

The optional dftd4 PyPI package (LGPL-3.0-or-later; see the [dispersion] extras in pyproject.toml) is the current path to full D4 dispersion energies via vibeqc.compute_d4 / run_b2plyp(dispersion="d4") / run_dsd_pbep86(dispersion="d4"). This is a Python-side runtime dependency only — the LGPL Fortran library lives in the dftd4 wheel, never in the vibe-qc tree. When a native D4 dispersion-energy backend lands (replacing the optional Python dep), it will be a clean-room reimplementation from the same paper, MPL 2.0 throughout — matching the EEQ implementation shipped today.

3d. External data fetched by vqfetch (no bundled data)

vqfetch (the v0.8.0 external-data integration) does not bundle any external data. It pulls structures and reference data on demand from public databases, caches results locally with full provenance metadata, and surfaces the per-record license terms back to the caller.

Source

Default license per record

Attribution requirement

COD (Crystallography Open Database)

CC0 / public domain

None legally; CIF authorship is preserved in provenance

Materials Project

CC-BY 4.0

Cite Materials Project per their terms

NOMAD

CC-BY 4.0 (data); CC0 (metadata)

Cite the contributing author + NOMAD as source

OPTIMADE federation

per-provider

varies — vqfetch records the provider in provenance

NIST CCCBDB

US Government work — public domain in US

Cite NIST Standard Reference Database 101 (DOI 10.18434/T47C7Z)

The provenance contract: every vqfetch-pulled record carries the source DB, ID, URL, original DOI (where available), license string, and fetched-at timestamp. This makes per-record attribution straightforward in publications and avoids any “where did this come from” auditability gap.

vqfetch does not ship pre-fetched data. The local cache (~/.cache/vqfetch/ per XDG) is populated only by user queries. If a user republishes work containing vqfetch-pulled records, the per-record license is displayed in the SCF log and recorded in the per-run .system manifest.

3e. Semiempirical (DFTB) parameters — fully native, MPL 2.0

vibe-qc ships its own implementation of the DFTB0 / SCC-DFTB semiempirical methods (python/vibeqc/semiempirical/, cpp/src/semiempirical/), with parameter tables constructed from scratch in cpp/src/semiempirical/parameters.cpp:

  • STO exponents from Slater’s rules.

  • On-site energies from periodic-trend scaling.

  • Hubbard U from approximate per-element estimates.

  • Repulsive-pair form R⁻¹² with an original default_repulsive_A estimator.

The parameter set covers H – U (87 elements). Zero values are sourced from dftb.org parameter sets (mio, 3ob, matsci, etc.) — no redistribution concern. This was confirmed by the semiempirical chat in the v0.9.0 cycle (commit 2d2c24eb).

Honest scope: these parameters are approximate, order-of-magnitudenot production-grade DFTB. Intended use is fast screening and geometry preoptimisation before HF/DFT refinement. The runtime banner and the .system manifest both record that vibe-qc is using its in-house parameter set rather than a published reference. See docs/semiempirical_stage1_design.md and docs/semiempirical_roadmap.md for the full provenance + scope writeup.

Method-paper citations (preserved per .bibtex sibling via the route methods / dftb in database.toml):

  • DFTB0 — Porezag, Frauenheim, Köhler, Seifert, Kaschner, Phys. Rev. B 51, 12947 (1995).

  • SCC-DFTB — Elstner et al., Phys. Rev. B 58, 7260 (1998).

  • Slater-rule STO ζ scaffolding — Hehre, Stewart, Pople, J. Chem. Phys. 51, 2657 (1969) (STO-NG context).

The parameter tables themselves are vibe-qc’s own work and ship under MPL-2.0 alongside the rest of the in-tree implementation.

Citing vibe-qc itself

A vibe-qc-specific citation will be added once the JCC release paper is published. Until then, please cite:

Plus any basis-set citation + ECP citation + functional citation for the methods you actually used. The citing guide collects the standard set.

Reporting a licensing concern

If you spot a licensing gap, an attribution that’s not being surfaced correctly, a basis set we shouldn’t be bundling, or an incompatibility we missed, please email mpei@vibe-qc.com. We take this seriously — vibe-qc is an open-source project run by one person, and getting any of this wrong has real consequences for the project’s ability to be used.