i-PI is a universal force engine interface written in Python, designed to be used together with an ab-initio (or force-field based) evaluation of the interactions between the atoms. The main goal is to decouple the problem of evolving the ionic positions to sample the appropriate thermodynamic ensemble and the problem of computing the inter-atomic forces.


The implementation is based on a client-server paradigm, where i-PI acts as the server and deals with the propagation of the nuclear motion, whereas the calculation of the potential energy, forces and the potential energy part of the pressure virial is delegated to one or more instances of an external code, acting as clients.

i-PI is free software, distributed under a dual MIT/GPLv3 licence. You are welcome to dowload, use, modify and redistribute it. To get the most up-to-date version, fetch it from the official i-PI repo. If you find it useful for your research, a citation would be appreciated to

Kapil et al., Comp. Phys. Comm. 236, 214–223 (2018)

As of today, the following codes provide out-of-the-box an i-PI interface: CP2K, DFTB+, Lammps, Quantum ESPRESSO, Siesta, FHI-aims, Yaff, deMonNano, plumed, ASE, TBE. If you are interested in interfacing your code to i-PI please get in touch, we are always glad to help!

If you have questions about running i-PI calculations, or including new features into the code, you can get help on the user forum, or on the github pages.