vibe-qc¶
Quantum chemistry for molecules and solids.
vibe-qc is a Python + C++17 electronic-structure code. The molecular stack — Hartree-Fock, density-functional theory, Møller-Plesset theory, analytic gradients, D3(BJ) dispersion — is validated against PySCF to machine precision. The periodic stack delivers 1D / 2D / 3D Hartree-Fock and Kohn-Sham DFT with Monkhorst-Pack k-meshes, Ewald-summed Madelung, band structure and density of states, and is growing toward CRYSTAL-style crystalline-orbital calculations at full-SCF accuracy.
Built on libint (Gaussian integrals), libxc (500+ XC functionals), and spglib (crystal symmetry). Licensed MPL-2.0.
Current release: 0.11.1 — Sun’s Stingray
The site you’re looking at renders the release branch — the
fast-forward-only public snapshot. main is at a higher
X.Y.dev0 development version; see release_process
for the branch model. Per-release codenames (Scientist + Animal,
loosely tied to whatever shipped) are catalogued in the
release-codenames roadmap entry.
💚 vibe-qc is funded by individual sponsors
vibe-qc is built and maintained by one person
in evenings and weekends, on personal hardware, with no institutional
backing. If the project is useful to you — or if you think the Cyclic
Cluster Model reaching CCSD(T) on an open-source code is worth existing —
please consider supporting it via
GitHub Sponsors (recurring
monthly, zero fees) or
Ko-fi (one-time, no GitHub account
required). Every sponsorship directly funds the Claude Max
subscription that drives day-to-day development, the self-hosted
server behind vibe-qc.com, and — most urgently — bigger hardware:
the project currently develops on a single Apple M2 laptop, and that’s
what caps every regression test, CI benchmark, and CRYSTAL-Tutorial
port to small systems. Smallest single actionable item right now:
the NIST Crystal Data SRD 3 single-user
subscription
at $200/year — fully fundable by one sponsor for a year, and
unlocks programmatic access to a curated crystallographic
database for the v2.x CCM reference work. See the
support page for the full
pitch and the near-/long-term hardware goals; public sponsors are
listed on the sponsors page.
✅ New in v0.11.0 (Sun’s Stingray)
v0.11.0 brings implicit solvation to the molecular stack: CPCM /
COSMO continuum solvation now works with effective core potentials,
so heavy-element chemistry in solution is a single run_job call.
The solvation surface ships its full citation trail (Tomasi’s 2005
continuum-models review and the Lange–Herbert switching-Gaussian
cavity), assembled automatically into every job’s .bibtex. The
release also extends the periodic semiempirical stack with an
end-to-end periodic PM6 tutorial, and consolidates the QVF
visualization format with a complete
file-format tutorial.
The periodic Gaussian-density-fitting (GDF) parity chain
(compcell + multi-k + AFT) remains the in-progress flagship — it is
held to PySCF KRHF.density_fit() parity as the only gate and is
not yet closed; the shipping periodic surface stays the Ewald-3D
and BIPOLE routes. See the roadmap for the deferral
chain and docs/handover_gdf_v0_11_2026_05_29.md for the precise
state.
See CHANGELOG for the full notes.
For the current open-issues list (workarounds, regression-test
pointers, status of each known bug), see
troubleshooting and the
issue tracker.
Install¶
git clone https://gitlab.peintinger.com/mpei/vibeqc.git
cd vibeqc
./scripts/install.sh # native deps + venv + pip install + banner
install.sh accepts --dev (main), --branch NAME (any branch
or tag), and other knobs — see installation.md
for the full surface and the manual setup_native_deps.sh recipe.
git clone lands you on the latest tagged release (the project’s
default branch is release, which fast-forwards from each new tag);
add --dev for bleeding-edge main or --branch vX.Y.Z to pin
a specific tag for reproducibility.
setup_native_deps.sh builds and installs every native dependency
(libint, libxc, spglib, FFTW3, libecpint) into third_party/ and
populates the bundled basis library. Re-running is a no-op if
everything’s already built. Full per-platform dependency lists
(macOS / Arch / Manjaro / Debian / Ubuntu) are in
installation.
Your first calculation¶
Make a working directory outside the repo — vibe-qc writes its
outputs into the current working directory, and you don’t want
.out / .molden / .traj files landing inside the source
tree:
mkdir -p ~/vibeqc-runs/water
cd ~/vibeqc-runs/water
Save the following as water.py in that directory (any filename
works — vibe-qc just runs whatever Python you point it at):
from vibeqc import Atom, Molecule, run_job
mol = Molecule([
Atom(8, [ 0.0, 0.00, 0.00]),
Atom(1, [ 0.0, 1.43, -0.98]),
Atom(1, [ 0.0, -1.43, -0.98]),
])
run_job(
mol,
basis="6-31g*",
method="rks",
functional="PBE",
dispersion="d3bj",
optimize=True,
output="water",
)
Run it with the virtual-env’s Python (the one pip install
populated above, not your system python3). Since you’re no
longer in the repo, give the full path:
~/path/to/vibeqc/.venv/bin/python water.py
Replace ~/path/to/vibeqc/ with wherever git clone landed.
That ~3-second run produces three files in ~/vibeqc-runs/water/:
water.out— banner, SCF trace, energy breakdown, orbital table, HOMO-LUMO gap, Mulliken / Löwdin charges, Mayer bond orders, dipole, and wall-clock timings.water.molden— molecular orbitals for Avogadro / Jmol.water.traj— ASE trajectory for the optimization, viewable withase gui water.traj.
Tip
Skip the path prefix. Activate the venv once per shell session and the path resolves automatically — works from any directory:
source ~/path/to/vibeqc/.venv/bin/activate # bash / zsh
python water.py # uses the venv's python
Deactivate with deactivate when you’re done.
Common mistake: ModuleNotFoundError: No module named 'vibeqc'
means you ran the wrong Python. Either give the full
~/path/to/vibeqc/.venv/bin/python path or activate the venv
first. The bare .venv/bin/python shorthand only works when your
shell is sitting inside the repo.
See quickstart for a 30-minute end-to-end
walkthrough (HF, periodic SCF, orbital cube), running
for the full “how to invoke vibe-qc scripts” reference (venv,
threading, output capture, SSH workflows),
good practices for the working conventions
nobody tells you (file layout, naming, when to trust a number),
the tour for the wider API surface (run_job, ASE
Calculator, logging, custom basis sets, tests), or dive into the
tutorials for worked examples.
Capabilities today¶
Molecular. Restricted and unrestricted HF / KS-DFT with analytic
nuclear gradients. The full libxc functional library — LDA, GGAs,
hybrids, the τ-dependent meta-GGA family (TPSS, M06-2X, SCAN,
r²SCAN), and the first range-separated hybrid (ωB97X). Møller-Plesset
theory (MP2 / UMP2 / RI-MP2 / SCS-MP2 / SOS-MP2) and the B2PLYP /
DSD-PBEP86 double hybrids. Non-mean-field wavefunction methods —
Full CI, selected CI, DMRG, variational 2-RDM — via
vibeqc.solvers. Density fitting
with the RIJK and RIJCOSX Fock-build kernels (RIJCOSX validated to
0.13 mHa vs ORCA 6.1.1). Effective core potentials for heavy-element
chemistry. CPCM / COSMO implicit solvation. Grimme D3(BJ) / D4
dispersion. 142 bundled basis sets plus the solid-state pob-*
family. All validated against PySCF and ORCA.
Periodic. 1D / 2D / 3D PeriodicSystem geometry, Monkhorst-Pack
k-meshes with IBZ reduction. Γ-only RHF and KS-DFT — including
hybrids — via native Gaussian density fitting; multi-k closed-shell
RHF / KS-DFT via 3D Ewald. Fermi-Dirac smearing for metals. The
CRYSTAL-gauge BIPOLE periodic-RHF parity workstream. Band structure
and density-of-states plotters. Gaussian cube + extended-XYZ +
POSCAR + XSF / BXSF writers.
Tooling. OpenMP parallelism throughout. Pre-flight memory budget
estimator. ASE Calculator integration for geometry optimization and
vibrational frequencies. Automatic per-job citation files
(.bibtex / .references). The
vibe-view interactive 3D viewer for
structure / orbitals / densities / bands / spectra / trajectories
out of every .qvf archive. The vq queue
for remote job submission.
See the feature matrix for details and the roadmap for what’s next.
Where to go next¶
Getting started
- Installation
- Quickstart — your first 30 minutes
- Using Claude to drive vibe-qc
- Setup: point Claude at the docs (the key step)
- A first session, end-to-end: corundum (α-Al₂O₃)
- A second session, Claude Code in the loop: water dimer with dispersion
- Workflow patterns
- What to paste back to Claude
- What Claude can’t see
- Pitfalls and how to dodge them
- End-to-end worked example: SMILES to IR spectrum
- Best practices
- Where to next
- Running vibe-qc
- The fundamental rule
- Two ways to invoke the venv’s Python
- Running a one-off calculation
- Running interactively (Jupyter / IPython)
- Capturing output (long runs, batch logs)
- Controlling threading
- Running on a remote machine via SSH
- Personal job queue (planned, v0.5)
- Running on a cluster with a job queue
- Running the test suite
- Common errors and quick fixes
- Where to go next
- Good practices
- Troubleshooting
- SCF didn’t converge
- “Canonical orth dropped too many basis directions”
- Memory abort before the SCF starts
KeyError: 'Ne'(or any other element) on basis load- “DF gradient disagrees by ~115 mHa/bohr”
- “Analytic RHF gradient is wrong”
- “Periodic (BIPOLE) forces / geometry optimisation look wrong”
ImportError: cannot import name 'EEQOptions' from 'vibeqc._vibeqc_core'ModuleNotFoundError: No module named 'vibeqc'- “Cell-list construction returned 0 cells”
vibeqc-cite: manifest missingafter a job- Things that are not errors
- Still stuck?
- Updating vibe-qc
- Tour of the vibe-qc API
- Tutorial
- Molecular Hartree-Fock
- Molecular DFT (RKS)
- Open-shell systems (UHF, UKS, UMP2)
- Initial guesses — hands-on walkthrough
- Non-mean-field solvers — Selected-CI, DMRG, v2RDM, and transcorrelated methods
- Semiempirical DFTB — fast preoptimization
- Post-SCF properties: charges, bonds, dipole
- Geometry optimization
- Vibrational frequencies
- Thermodynamics at temperature
- Orbital and density visualization
- Basis-set convergence
- Dispersion corrections (D3-BJ)
- DFT functional comparison
- Range-separated hybrids: ωB97X and the HOMO ≈ −IP property
- Nudged Elastic Band: reaction paths & transition states
- Natural orbitals and the idempotency diagnostic
- RIJCOSX SCF + analytic gradient on glycine
- Pt cluster with LANL2DZ — heavy-element ECP
- Double hybrid: B2PLYP step by step
- Verifying an RI-MP2 auxiliary basis
- Solvation in water (CPCM)
- Stiff molecular SCF: rescuing oscillation with EDIIS+DIIS
- Periodic HF on a 1D H chain
- Periodic KS-DFT
- Madelung constants via Ewald summation
- Band structure and density of states
- Why solid-state calculations use
pob-TZVP - Peierls dimerisation of a 1D H-chain
- Projected density of states (PDOS)
- Periodic orbital cubes and XSF files
- Tight-cell DFT with the periodic Becke partition
- Periodic SCF convergence: damping, DIIS, and level shifts
- Symmetry-aware storage of lattice integrals (SYM3a)
- Solid-state walkthrough: LiH rocksalt with pob-TZVP
- Tutorial 30: H-chain BvK equivalence — vibe-qc’s CCM ancestor
- 33. MgO from Materials Project —
vqfetchend-to-end - 34. LiH at multi-k — KRHF targeting Peintinger 2013 SI Table 2
- 35. Open-shell Mg⁺• in a periodic box — UHF GDF + Makov-Payne
- Fermi-Dirac smearing for metals and small-gap solids
- 43 — XSF and BXSF: periodic volumetric visualisation
- Running in parallel
- Tutorial 26: Cross-validating against ORCA, Psi4, PySCF
- Tutorial 27: Viewing geometries, orbitals, and vibrations with MolTUI
- Tutorial 29: Reproducing a reference output
- Auto-citations: from
.outto manuscript bibliography - Tutorial 45: vibe-view end-to-end walkthrough
- Tutorial 47: The QVF file format, end to end
- Submitting a job to a remote machine with
vq
User guide
- User guide
- Molecules
- Basis sets
- Functionals
- MP2 and double hybrids
- Non-mean-field solvers (
vibeqc.solvers) - Composite “3c” methods
- The
data_library/parameter-storage standard - Effective core potentials (ECPs)
- Implicit solvation (CPCM / COSMO)
- Density fitting (RIJ / RIJK / RIJCOSX)
- Periodic systems
- Crystal lattices
- Slabs and adsorbates
- k-point meshes
- Multi-k periodic SCF
- Ewald summation in periodic systems
- CRYSTAL-style BIPOLE periodic HF and DFT
- Plane-wave Hartree-J via GPW (experimental)
- Periodic-SCF methods: BIPOLE, GDF, GPW / GAPW
- DFT+U (Hubbard correction)
- Relaxed coordinate scans
- SCF convergence
- Smearing (fractional occupations for periodic SCF)
- SCF Fock-build modes
- Initial guesses
- Linear dependence and screening in periodic SCF
- Memory budget
- Settings introspection
- BLAS + LAPACK backend
- ASE integration
- Nudged Elastic Band (NEB)
- External QC codes (ORCA / Psi4 / others)
- External structures (
vqfetch) - Moving from PySCF
- Moving from CRYSTAL
- Moving from ORCA
- Moving from Gaussian
- Experimental reference data (
vqfetch reference) - Input scripts and output files
- Automatic citations
- Post-SCF properties
- Band structure and density of states
- Volumetric data: cube, XSF, and BXSF files
- vibe-view: interactive viewer
- The vq calculation queue
- Running vibe-qc from Jupyter Lab
Reference
Status¶
vibe-qc is pre-release software. Molecular HF/DFT/MP2 is stable and production-ready for small-to-medium systems; periodic calculations converge cleanly in the molecular-limit regime and are being hardened for tight-cell bulk work. Follow the roadmap for what’s shipping next.
Licensed under the Mozilla Public License 2.0. Source at gitlab.peintinger.com/mpei/vibeqc.
Feedback and bug reports¶
Found a bug, have a feature request, or want to send a patch? The decision tree lives in CONTRIBUTING.md. The short version:
Bugs / install problems / feature requests → GitLab issue tracker
Security vulnerabilities → email
mpei@vibe-qc.com(see SECURITY.md)General feedback / questions → email
mpei@vibe-qc.comSponsor the project → see Support vibe-qc (GitHub Sponsors, Ko-fi)