TorchMD: MIT code, borrowed file readers, and a single example notebook
End-To-End Molecular Dynamics (MD) Engine using PyTorch
At a glance
- What is it?
- TorchMD exposes molecular dynamics as PyTorch operations in units borrowed from ACEMD. Its declared licence is MIT, but the README says the file format readers in torchmd/run.py come from Moleculekit under different terms, and the newest release is v1.1.2 from January 2026.
- Who is it for?
- TorchMD suits a researcher who wants molecular dynamics written as PyTorch operations and who can live with an API that its own README labels WIP. It does not suit anyone who needs one unambiguous licence, because the code is MIT, the file format readers in torchmd/run.py are not, and the package metadata records only the first half of that.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 174 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 11, 2026, and from our analysis. They are not legal advice.
Editorial analysis
MIT by declaration, a research licence in torchmd/run.py
The README makes the licence situation explicit, and it is not one licence. The first sentence says all the code in this repository is MIT. The next says several file format readers are taken from Moleculekit, which carries a free open source non-for-profit, research licence, and that the bulk of them sit in `torchmd/run.py`. The packaging metadata does not carry that caveat anywhere. `license = { file = "LICENSE.md" }` points at one root file, and the classifier list holds a single licence entry, `License :: OSI Approved :: MIT License`. So an index reading the metadata sees a plain MIT project while the repository itself says a subset of the readers is under other terms, and nothing in `pyproject.toml` marks which lines are borrowed.
The bare install gets no moleculekit, and run.py wants it
Moleculekit sits in the `full` extra rather than in the core list. The runtime dependencies are three names, `torch`, `pyyaml` and `tqdm`. The extra adds moleculekit, pandas, networkx, scipy, `parmed>=4.3.0` and `numpy<2`. The README states that Moleculekit is installed automatically being in the requirement file, which holds for the full install and not for the bare one. The install block offers both, in one shell session:
mamba create -n torchmd
mamba activate torchmd
mamba install pytorch python=3.10 -c conda-forge
pip install "torchmd[full]" --extra-index-url https://download.pytorch.org/whl/cu126
pip install torchmd --extra-index-url https://download.pytorch.org/whl/cu126That leaves the module holding the borrowed readers, `torchmd/run.py`, with a third-party import that the second command does not guarantee. The extra also caps numpy below 2 while the core declares no numpy of its own, so that cap only binds once somebody opts in.
Three releases in eighteen minutes, then a long quiet
Three releases share one afternoon. v1.1.0 was published at 14:41:28 on 2026-01-07, v1.1.1 at 14:48:02, and v1.1.2 at 15:03:52. That is a patch cascade inside eighteen minutes, the shape of a response to a packaging or dependency problem rather than of new functionality. Nothing has superseded it. The newest tag is still v1.1.2, carrying a 2026-01-07 date, and the last push to the default branch is dated 2026-04-21. So roughly three months separate the last tag from the last commit, and no release has followed the work done since. The README describes the project as WIP in its own words and invites reports of API problems and potential bugs through the GitHub issue tracker.
make release needs a version, and make docs force-moves a tag
The Makefile declares two targets and sets no default goal, so a bare `make` produces nothing useful. Both targets are marked `.PHONY` and both are gated by a `check_defined` macro that aborts with an error when the `version` variable is empty. `release` then runs `git tag -a v$(version) -m "v$(version) release"` and pushes that single tag to origin. `docs` builds a second tag behind a `d` prefix and pushes it with `--force`, so the documentation tag is rewritten on every invocation and history for it is not kept. The repository ships `tests/`, `scripts/` and `bin/` directories, and the top-level Makefile has no target that touches any of them.
Linux in the classifiers, win32 in the index, ARM left out
The classifiers name one operating system, `Operating System :: POSIX :: Linux`. The uv configuration in the same file names two, because the marker that selects the CUDA index reads `(sys_platform == 'linux' or sys_platform == 'win32') and platform_machine != 'aarch64' and platform_machine != 'arm64'`. Windows is therefore a target for the wheel source and absent from the published metadata. Both ARM architectures are excluded from that index, so an Apple Silicon machine resolves PyTorch from the default index rather than from the CUDA 12.6 one. The install steps say nothing about operating systems, and they pin `python=3.10` through conda-forge while `requires-python` permits anything from 3.10 upwards.
One notebook in examples, and the paper tutorial lives elsewhere
The README says various examples can be found in the `examples` folder. That folder holds one file, `examples/tutorial.ipynb`. The notebook that reproduces the paper is neither that file nor in this repository: it is `Chignolin_Coarse-Grained_Tutorial.ipynb` under the `tutorial` directory of torchmd/torchmd-cg. Three repositories are therefore involved in one workflow, this engine, the coarse grained tutorial repository, and the potentials repository named in the acknowledgements. A reader who follows the citation section in order to reproduce the paper ends up cloning a different project from the one the citation describes.
TorchMD is the engine half; TorchMD-Net holds the potentials
The README draws the boundary itself, telling readers to also check TorchMD-Net for fast and accurate neural network potentials at the torchmd-net repository. The package description is narrower still, `TorchMD. Molecular dynamics with pytorch`, and the homepage recorded in pyproject.toml points at this repository's own GitHub page rather than at a documentation site. The physical contract is the part most likely to matter when porting code, and it is spelled out plainly: energies in kcal/mol, temperatures in K, masses in g/mol, and distances in Å, chosen to be consistent with classical MD codes such as ACEMD. The author field credits Acellera, and the acknowledgements name the Chan Zuckerberg Initiative and Acellera as funders.
Editorial conclusion
TorchMD suits a researcher who wants molecular dynamics written as PyTorch operations and who can live with an API that its own README labels WIP. It does not suit anyone who needs one unambiguous licence, because the code is MIT, the file format readers in torchmd/run.py are not, and the package metadata records only the first half of that. Check three things before building on it. Check that the module you import lives on the path where moleculekit is installed, since a bare install gets only torch, pyyaml and tqdm. Check which tag you are on, given that v1.1.2 is the newest release and the last commit is dated 2026-04-21. Check the architecture, since the CUDA 12.6 wheel index is excluded on aarch64 and arm64.
Frequently asked questions
What units does TorchMD use?
kcal/mol for energies, K for temperatures, g/mol for masses, and Å for distances, chosen to be consistent with classical MD codes such as ACEMD.
Can I install TorchMD without moleculekit?
Yes. The core dependencies are torch, pyyaml and tqdm, while moleculekit, pandas, networkx, scipy, parmed and numpy<2 sit in the full extra.
What licence applies to TorchMD?
The code in the repository is MIT. The README notes that several file format readers taken from Moleculekit carry a free open source non-for-profit, research licence, mainly in torchmd/run.py, while pyproject.toml records only the MIT licence file.
How do I install TorchMD against the CUDA 12.6 wheel index?
The README recommends a Miniforge environment, installs pytorch and python=3.10 from conda-forge, then runs pip install "torchmd[full]" --extra-index-url https://download.pytorch.org/whl/cu126. The same command without the extra installs only the core dependencies.
Where are the TorchMD tutorials and examples?
The examples folder holds a single notebook, examples/tutorial.ipynb. The notebook used to reproduce the paper is Chignolin_Coarse-Grained_Tutorial.ipynb in the torchmd-cg repository instead.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/torchmd-torchmd)