Alembic: a scene data library, file format, and plugin ecosystem in one framework
Alembic is an open framework for storing and sharing scene data that includes a C++ library, a file format, and client plugins and applications.
At a glance
- What is it?
- Alembic is a C++ framework for storing and sharing scene data across a pipeline, built around an object-based file format and extended by plugins for Maya, Houdini, Arnold, and PRMan. The cost of adoption is a native build against several optional dependencies.
- Who is it for?
- Alembic suits studios and pipeline teams that need geometry to survive a handoff between tools without losing the ability to stream it, and it is a poor fit for a small project that only needs to export a mesh once or that cannot take on a native build with Imath, HDF5 and host application SDKs.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 37 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 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One format and one library for geometry that crosses tool boundaries
Alembic solves a specific pipeline problem rather than a general one. In a production that touches several digital content creation tools, geometry is written out, read back, and re-exported constantly. Every one of those round trips is a chance to lose information, and every one of them costs disk and time. Alembic is an open framework for storing and sharing scene data, and it is built as three things at once: a C++ library, a file format, and a set of client plugins and applications.
The audience is therefore the technical artist and pipeline engineer inside a studio, not the general web developer. The copyright line in the source names Sony Pictures Imageworks and Industrial Light and Magic, a division of Lucasfilm Entertainment Company Ltd, which is a reasonable signal about the kind of environment this code was written for. Large scenes are the design point.
The framing of the project matters for adoption decisions. It is a framework with a stable interchange format, not a plugin for one application. Choosing it means committing to a file format that other tools read, not just to a library call inside a single codebase. The repository layout shows that breadth: separate directories for arnold, houdini, maya, prman, python, and examples, alongside the core lib directory and the cmake build machinery.
A C++ core with a package build, client libraries and applications
The implementation is C++ and is compiled with CMake. A build produces the primary Alembic library, which can be either shared or static depending on a configuration flag, and around it a set of client libraries and applications such as AbcExport and AbcImport, the latter named explicitly in the build options for the Maya integration.
The Python side is a separate concern, not a reimplementation. The python directory and setup.py exist to build boost python bindings, and setup.py is a wrapper around the same CMake build rather than a standalone build system. It defines a CMakeExtension subclass that shells out to cmake, checks the cmake version is present, and passes a library output directory and the path to the Python interpreter into the CMake configuration. It also handles the Windows specifics, including a 64 bit generator flag when the interpreter is 64 bit.
That arrangement has a practical consequence. Anyone installing the Python package still needs a working CMake and a compiler on the machine, because pip does not become the only tool in the chain. The bindings are described as boost python bindings, and Boost and PyImath 3 both appear on the optional dependency list, so the Python route carries extra prerequisites that the C++ route does not.
Building from source with CMake and a separate build root
The documented build path is a source clone followed by a separate build directory. The first requirement is CMake 3.29 or newer, plus a C++ compiler that supports C++11, plus Imath 3. Optional dependencies widen the surface: HDF5 1.8.9 for optional HDF5 support, Boost 1.55 or newer and PyImath 3 for the Python bindings, Arnold 3.3 or newer, Pixar PRMan 15.x, and Autodesk Maya 2012 or newer.
The versions in parentheses are described as minimum tested versions, with the explicit warning that earlier or later versions may work but are not what the project builds against. That sentence is the kind of detail that saves a pipeline team a day of trial and error, and it also tells you the compatibility surface is not policed.
The documented sequence starts with a clone, then a cmake invocation from a separate build root pointing at the source root, then a build and a test run. Keep the two roots separate, and do not install dependencies underneath the Alembic source root, since the documentation advises against that explicitly.
Configuration flags decide which features you actually get
Most of the interesting behaviour in Alembic is switched on at configure time, and the flags below are copied from the project's own build options rather than guessed.
$ cd <build root>
$ cmake [OPTIONS] <source root>The primary library can be built as a static library instead of a dynamic one with a single flag, which matters for teams shipping a self-contained application bundle. Optional HDF5 support is enabled separately, and when HDF5 is not in a standard location an extra path variable points CMake at it. The Maya application pair is likewise conditional, and it can be pointed at a specific Maya installation when the default path is not right. A custom install prefix is supported for placing the build in an arbitrary location, and the Python bindings have their own switch that also requires Boost and PyImath. Doxygen documentation can be generated and installed to a chosen path if Doxygen is present, and the project marks that documentation target as work in progress. A generator flag selects a specific Visual Studio project type for 64 bit builds.
The pattern worth naming: capability is opt in and tied to a third party SDK being present. A build that omits the Maya flag still gives you the core library, just without the exporter and importer applications.
Building, testing, and running the test suite on Windows
After configuring, the documented build and test steps are short. The build is a single cmake command in the build root, and the tests are driven by ctest.
cmake -build .
$ ctestOn Windows there is one documented wrinkle: the path to the Alembic dlls may have to be added to the environment so the test binaries and the tools can locate the shared libraries, along with the location of the Imath dlls if Imath is not installed in a standard place. This is the sort of detail that is easy to miss and expensive to diagnose, because the failure shows up as a load error rather than a build error.
The examples directory carries a CMakeLists.txt and an AbcClients subdirectory, so the repository also builds small example programs that exercise the client API. If you are evaluating the library, building the examples is a fast way to see the intended call sequence before you commit to integrating it into your own exporter.
For help, the project points to the alembic-discussion mailing list hosted on Google Groups, with archives and sign up available at the same address.
Where the optional dependency list becomes a liability
The dependency list is the honest cost centre of this project. Required items are manageable: CMake 3.29 or newer, a C++11 capable compiler, and Imath 3. Everything else drags in a large external SDK. Maya 2012 or newer means licensing and installed-creative-suite constraints on every machine that has to build the plugin. Arnold 3.3 or newer and PRMan 15.x are proprietary renderers, so a build machine for those plugins needs those products installed.
The practical failure mode is divergence between build environments. A studio with a mixed fleet of DCC versions will find the shared build script pinned to one Maya version, and someone maintaining it will spend time on compatibility rather than on the format. The documentation offers no container image, no prebuilt binary list, and no statement about which platform combinations are continuously tested, so the burden of assembling a reproducible environment sits with the adopter.
The 1.8 line also has a versioning wrinkle for anyone pinning dependencies elsewhere. The published releases are 1.8.12 from 2026-07-02, 1.8.11 from 2026-03-20, and 1.8.10 from 2025-11-17. They are patch releases on a stable minor line rather than a stream of new features, which suits a format library, and it also means an upgrade is mostly a patch bump with no migration story to learn.
A custom licence instead of a standard permissive one
The licence is the item that deserves a second look. The repository carries a LICENSE.txt, and it is not one of the standard permissive licences that tooling can classify by identifier. It is described as a custom licence with copyright held by Sony Pictures Imageworks and Industrial Light and Magic, a division of Lucasfilm Entertainment Company Ltd, covering 2009 to 2021.
For an open source framework that people intend to adopt into a commercial pipeline, that matters. The repository also lists ACKNOWLEDGEMENTS.txt and THIRD-PARTY.txt at the top level, which is the usual way a project records what it incorporates and under what terms, and a FEEDBACK.txt that suggests the project tracks community input. None of that substitutes for reading the licence text itself, and nobody should take a general description of a custom licence as legal advice about your particular use.
Practically, the question to answer before you build a shipping product on this is narrow and answerable: what does LICENSE.txt require, and does it match the obligations of the other components in your pipeline. Teams treating Alembic as a build dependency will want that answer recorded somewhere.
The maintenance picture is straightforward. The repository is not archived, and the last push was on 2026-09-17, with the most recent release, 1.8.12, published on 2026-07-02.
Editorial conclusion
Alembic suits studios and pipeline teams that need geometry to survive a handoff between tools without losing the ability to stream it, and it is a poor fit for a small project that only needs to export a mesh once or that cannot take on a native build with Imath, HDF5 and host application SDKs. Before committing, build the library on the exact CMake, Imath and compiler combination your pipeline uses, then check the plugin set you need against the optional dependencies, and read LICENSE.txt yourself since the licence is a custom one rather than a standard SPDX identifier.
Frequently asked questions
What is Alembic used for in a VFX or animation pipeline?
Alembic is an open framework for storing and sharing scene data. It is made up of a C++ library, a file format, and client plugins and applications, and it is used to move geometry between tools such as Maya, Houdini, Arnold and PRMan.
What do I need to install before building Alembic?
Required dependencies are CMake 3.29 or newer, a C++ compiler that supports C++11, and Imath 3. Optional ones include HDF5 1.8.9, Boost 1.55 or newer and PyImath 3 for the Python bindings, Arnold 3.3 or newer, Pixar PRMan 15.x, and Autodesk Maya 2012 or newer.
How do you build and test Alembic from source?
Clone the repository, run cmake from a separate build root pointing at the source root, then run cmake -build . followed by ctest. On Windows you may need to add the path to your Alembic dlls, and to the Imath dlls if Imath is not in a standard place.
Can I build the Alembic Python bindings?
Yes, by configuring with -DUSE_PYALEMBIC=ON, which builds the boost python bindings. That requires Boost 1.55 or newer and PyImath 3 on the optional dependency list, and setup.py drives the same CMake build rather than replacing it.
Is Alembic still being maintained?
The repository is not archived and the last push was on 2026-09-17. The most recent release is 1.8.12 from 2026-07-02, preceded by 1.8.11 from 2026-03-20 and 1.8.10 from 2025-11-17.
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/alembic-alembic)Was this useful?