Model or dataset
OpenChemistry/avogadrolibs avatar
OpenChemistry/avogadrolibs

avogadrolibs: the rendering and data core behind Avogadro 2

Avogadro libraries provide 3D rendering, visualization, analysis and data processing useful in computational chemistry, molecular modeling, bioinformatics, materials science, and related areas.

690 stars248 forksC++BSD-3-Clause

At a glance

What is it?
OpenChemistry/avogadrolibs holds the C++ libraries behind Avogadro 2, a cross platform molecular editor with an OpenGL rendering engine and a plugin architecture. The same tree is also packaged as a Python extension called avogadro, built with scikit-build-core and pybind11.
Who is it for?
avogadrolibs is the right dependency if you are building a molecular viewer, an analysis tool or a chemistry workflow on top of Avogadro 2's file format handling and rendering, and it is a reasonable choice if you want the core library from Python without pulling in the Qt application.
Can I use it commercially?
Yes. BSD-3-Clause 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 3 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 20, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Libraries separated from the application

Avogadro is described as an advanced molecular editor for cross platform use in computational chemistry, molecular modeling, education, bioinformatics, materials science and related areas, offering flexible rendering and a plugin architecture. The codebase is split across two repositories, this libraries repository and an application repository, and the split is the single most important structural fact about the project. The libraries here provide 3D rendering, visualization, analysis and data processing, and the application that consumes them is elsewhere. The project states the goals of the core as an intuitive interface useful to the whole community, fast and efficient rendering that embraces the latest technologies, extensibility through extensive use of a plugin architecture, and flexibility in supporting a range of chemical data formats and packages. Avogadro 2 began as a rewrite of Avogadro 1.x, which the documentation now states is unsupported, and the rewrite is described as bringing a high performance rendering engine, modern code development, and improved speed and stability.

The same tree builds a Python extension

The most interesting engineering detail in the repository is that the C++ libraries are also distributed to Python. The pyproject.toml declares a project named avogadro with a dynamic version, a description of providing analysis and data processing useful in computational chemistry, molecular modeling, bioinformatics and materials science, and a licence of BSD-3-Clause. The build backend is scikit_build_core.build, with `scikit-build-core>=0.10`, `pybind11` and `setuptools_scm>=8` in the build requirements, so the version is derived from the source tree rather than written down. Runtime requirements are Python 3.11 or newer and `numpy>=2.0`, and the classifiers list both Python and C++ as the programming languages, with a development status of Production/Stable and intended audiences of developers, education and science and research. The effect for a Python user is that the same molecule handling, file format support and analysis code that drives the desktop editor is importable from a script.

The Python build turns most of the desktop stack off

The scikit-build section of pyproject.toml is where you find out what the Python package does not contain. The feature toggles are explicit, and the block reads as a list of what is disabled for the wheel:

toml
cmake.define.USE_SPGLIB = "FALSE"
cmake.define.USE_OPENGL = "FALSE"
cmake.define.USE_QT = "FALSE"
cmake.define.USE_MMTF = "FALSE"
cmake.define.USE_PYTHON = "TRUE"
cmake.define.USE_HDF5 = "FALSE"
cmake.define.USE_LIBARCHIVE = "FALSE"
cmake.define.USE_LIBMSYM = "FALSE"

So the Python distribution has OpenGL disabled, which means no rendering, and Qt disabled, which means no GUI, while USE_PYTHON is turned on. Spglib, the MMTF format reader, HDF5, libarchive and libmsym are also off. This is a sensible split, since a Python user typically wants the parsing and analysis layer, and turning off the rendering and UI dependencies is what keeps the wheel installable in a headless environment. It also means the Python package is not a way to get the viewer. If you need pixels, you need the C++ library built with the graphics options enabled, or the application.

Getting binaries without building anything

For the most up to date experience the documentation points at the continuous builds prepared by GitHub Actions, with direct downloads for Windows as an installer, macOS as an arm64 disk image and a second macOS build, and Linux as an AppImage. Full releases and an overview of every way to obtain Avogadro are on the project's install page, and the binaries and source code for each release are on the GitHub releases page. There is also a beta Flatpak for Linux that the documentation says is updated with the latest changes every week or two, which is a useful middle ground for a Linux user who wants a packaged install that is more current than the last tag. The release history in the repository shows how the project now publishes: a 2.0.0 release on 2026-04-01, a 1.103.0 release on 2026-02-06, and a rolling `continuous` tag dated 2025-10-29, alongside per platform build workflows for Linux, Windows and macOS.

What sits in the repository tree

The top level shows a C++ project with a Python component and serious tooling investment. There is an `avogadro/` directory for the library sources, `cmake/` for the build system, `tests/` with a `CTestConfig.cmake`, `thirdparty/` for vendored dependencies, `utilities/` for command line tools, `python/` for the bindings, and `i18n/` for translations. The `docs/` directory holds the documentation, and `scripts/` holds the supporting scripts. The code quality tooling is visible rather than implied, with a `.clang-format`, a `.clang-tidy` and a `.clang-tidy-ignore`, a `.pre-commit-config.yaml`, a `.codespellrc` and a `.misspell-fixer.ignore`, a Codacy configuration, and a pyproject.toml that also configures the Python tooling. There is a `CITATION.cff` for citing the software, a `PRIVACY.md`, a `SECURITY.md`, a `STYLE.md`, a `CODE_OF_CONDUCT.md` and an `AGENTS.md`.

Compared with the desktop application

The alternative for someone who wants to do chemistry on the desktop is the application repository, avogadroapp, and the two are companions rather than competitors. The division of labour follows from the architecture. The libraries own the model and the algorithms, the file formats, the rendering engine and the plugin interfaces, and they are consumable from C++, from Python, and from the application. The application owns the user interface, the Qt widgets, the menus and the workflow that a person actually sees. A practical consequence is that choosing the libraries does not lock you out of the application, and choosing the application does not force you to rebuild the libraries yourself, since the application ships the libraries it needs. What the split does mean is that a question about interface behaviour belongs to the other repository, and that if you are looking for a one file install of a molecule editor, this is the wrong dependency.

Where the project is still moving

Two limitations are visible in the documentation and the packaging. The first is the version split. The 1.x line is stated to be unsupported, the 2.x line is a rewrite that the project describes as faster and more feature rich, and the release numbering shows a jump through 1.103.0 to 2.0.0, so code written against Avogadro 1 APIs is not a drop in replacement, and the two.avogadro.cc documentation carries a what is new page for the migration. The second is the split between the stable tags and the continuous builds, which is a real choice for a user: the continuous channel is the most current but is by definition untagged, while a numbered release is reproducible. The project also makes clear that it is a community effort under the Open Chemistry umbrella, which started at Kitware, and that contributions of many kinds are welcome, including bug reports, feature suggestions, language translations, Python plugins and C++ code, with the standard GitHub pull request process, a documented API regenerated nightly, and a forum for discussion. The 2.0.0 release and the ongoing work on the master branch are the current state of that process.

Editorial conclusion

avogadrolibs is the right dependency if you are building a molecular viewer, an analysis tool or a chemistry workflow on top of Avogadro 2's file format handling and rendering, and it is a reasonable choice if you want the core library from Python without pulling in the Qt application. It is the wrong dependency if you want the desktop application itself, which lives in a separate repository, and it is the wrong choice if you need the old Avogadro 1.x behaviour, which the documentation states is now unsupported. Before you build against it, check the CMake feature toggles in pyproject.toml, because the Python wheel turns off OpenGL, Qt, spglib, MMTF and HDF5, and confirm the release you pin since the 2.0.0 tag and the continuous builds differ. The last push was on 2026-10-20 and the code is BSD-3-Clause licensed.

Frequently asked questions

What is the difference between avogadrolibs and the Avogadro application?

The codebase is split across a libraries repository, this one, and an application repository, avogadroapp. The libraries provide the 3D rendering, visualization, analysis and data processing, while the application provides the user interface on top of them.

Can I use the Avogadro libraries from Python?

Yes. The project ships a Python distribution named avogadro built with scikit-build-core and pybind11, requiring Python 3.11 or newer and numpy 2.0 or newer, and exposing the analysis and data processing functionality for computational chemistry and related work.

Does the Python build of Avogadro include the 3D viewer?

No. The scikit-build configuration in pyproject.toml sets USE_OPENGL to FALSE and USE_QT to FALSE for the Python package, alongside disabling spglib, MMTF, HDF5, libarchive and libmsym, so the wheel is the data and analysis layer rather than the viewer.

How do I get Avogadro binaries without building from source?

The documentation points to the continuous builds prepared by GitHub Actions for Windows, macOS and Linux as an AppImage, to the GitHub releases page for full releases with binaries and source, and to a beta Flatpak for Linux that is updated with the latest changes every week or two.

Official sources

  1. License: BSD-3-Clause
  2. OpenChemistry/avogadrolibs on GitHub
  3. Project website
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/openchemistry-avogadrolibs.svg)](https://hysenlabs.com/projects/openchemistry-avogadrolibs)

Was this useful?