Meshroom: a node-based toolbox for photogrammetry and 3D reconstruction
Node-based Visual Programming Toolbox
At a glance
- What is it?
- Meshroom is AliceVision's node-based framework for building and running data processing pipelines, shipped with a photogrammetry plugin that turns photo sets into 3D models. It is easy to install from pre-compiled binaries, but the documentation leaves some operational questions open.
- Who is it for?
- Meshroom suits engineers and artists who want a visual pipeline for photogrammetry, camera tracking, HDR fusion or panorama stitching, and who are comfortable reading node documentation rather than a single tutorial. Teams that need a fully scripted, headless pipeline should confirm the command-line entry points and renderfarm setup before committing, because the README points to the manual and INSTALL.md instead of documenting those paths inline.
- 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 received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 16, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What Meshroom actually is, and who it is for
Meshroom is described in its README as "an open-source, node-based visual programming framework", a toolbox for creating, managing and executing complex data processing pipelines. It is not a single-purpose photogrammetry application, even though the bundled AliceVision plugin is what most people use it for. The framework itself is generic: nodes represent operations, edges carry data between them, and attributes control each node's behaviour. The bundled AliceVision plugin supplies the computer vision algorithms: 3D reconstruction from multi-view images, camera tracking, HDR fusion from bracketed photography, panorama stitching with fisheye support, and photometric stereo. A Segmentation plugin adds nodes for AI-powered image segmentation from natural language prompts. The intended audience is therefore twofold. One group is photogrammetry users who want a graphical tool that turns photographs into 3D models, camera positions and scene geometry. The other group is pipeline builders who want a nodal interface for chaining external command-line tools and Python nodes, with caching and distributed execution handled by the framework. If you only need to reconstruct one object from a handful of photos, the framework's generality is overhead you will not use. If you need to assemble a repeatable multi-step processing graph, the node model is the point.
The graph, the cache, and what happens when you change an attribute
The mechanism that separates Meshroom from a simple batch script is invalidation. According to the README, when a node's attribute is modified, only the affected downstream nodes are invalidated, while cached intermediate results are reused to minimize unnecessary computation. That means a graph is not re-executed from the start every time you tweak a parameter; the framework tracks which nodes depend on the changed attribute and re-runs only those. The README does not document how the cache is keyed or where intermediate results are stored, so the granularity of invalidation is something you learn by watching the graph editor. Execution can be local or distributed. Meshroom supports running on render farms, and the README states that both modes can be used simultaneously because Meshroom manages node locking during external computation. The repository contains a localfarm directory, which suggests a local renderfarm implementation is part of the codebase, though the README does not explain how to configure it. The user interface is split into a Graph Editor for placing and connecting nodes, a Node Editor with tabs for Attributes, Log, Statistics, Status, Documentation and Notes, a 2D and 3D Viewer for node output, and an Image Gallery for input files. Templates are ready-to-use pipeline configurations provided by plugins; you can customize an existing template or save your own. For anyone coming from a command-line photogrammetry tool, the trade-off is explicit: you get visual inspection and selective re-execution, but you also get a graph you must understand before you can debug a failure.
How to install Meshroom and run a first reconstruction
The README gives two paths. The first is to download pre-compiled binaries for the latest release from the GitHub releases page. The second is to build it yourself, following INSTALL.md to set up the project and its prerequisites. For custom plugins there is a separate INSTALL_PLUGINS.md. The README does not reproduce the build steps, so the commands below are the ones the repository layout implies rather than a documented sequence. If you clone the repository, the top level contains start.sh and start.bat, which are the launcher scripts for Unix and Windows respectively. On a Unix-like system, the launcher is invoked from the repository root. The README does not state what arguments start.sh accepts, so run it without arguments first and let the interface open. The runtime dependencies listed in requirements.txt are psutil, PySide6, markdown, requests and pyseq. PySide6 is pinned to 6.8.3 for Python 3.9 and above, and to 6.5.3 below that; markdown and requests have similar version splits. That pinning matters if you build from source on an older interpreter. Once the interface is open, the workflow the README implies is: choose a template from the AliceVision plugin, add your images through the Image Gallery, then execute the graph. The README does not give a step-by-step first-run tutorial, and it does not state which node produces which output file, so the manual at meshroom-manual.readthedocs.io is where those details live. What you should see after a successful run is a 3D model and camera positions in the 3D Viewer, which the README lists as one of the interface areas.
The CUDA question and other constraints the README does not answer
One of the most common questions about Meshroom is how to use it without CUDA, and the README does not address it. The AliceVision plugin is described as providing "research-grade algorithms with production-level robustness and quality", but the README does not list which of those algorithms require a GPU. Since the repository's requirements.txt contains only Python-level dependencies and no CUDA packages, the GPU dependency, if any, lives in the AliceVision binaries or the plugins rather than in Meshroom's own Python environment. That is a real gap for anyone planning a deployment: you cannot tell from the README alone whether a CPU-only machine will complete a reconstruction or fail partway through. The same applies to input formats. The README mentions an Image Gallery for visualizing input files and a 2D and 3D Viewer for output, but it does not enumerate supported image formats or the minimum number of photographs needed. The licence is also ambiguous at the repository level: the metadata reports NOASSERTION, while the repository contains LICENSE-MPL2.md and COPYING.md. The README does not explain how the two relate, and the bundled AliceVision plugin has its own repository and therefore potentially its own terms. If you are evaluating Meshroom for commercial work, that is something to resolve by reading both files rather than by assuming the top-level licence covers everything.
When Meshroom is the wrong tool
Meshroom is a poor fit when you need a single deterministic command that runs unattended on a server. The README describes a graphical framework with a node editor, viewers and a gallery; the distributed execution path is described in terms of render farms and node locking, not in terms of a documented headless CLI. The repository does contain a bin directory and the top-level start.sh and start.bat scripts, so a command-line entry point exists, but the README does not document its flags or its exit behaviour. If your pipeline must be scripted end to end, you will be reading source and manuals to find that interface, and you should verify it before you commit. Meshroom is also the wrong tool when your problem is not a pipeline at all. If you want to align two images, or run one segmentation model on one photo, the graph abstraction adds a layer of configuration for no benefit. And if your input is a video rather than a photo set, the README's description of the AliceVision plugin is framed around multi-view images, camera tracking and bracketed photography; it does not describe a video ingestion path. The framework could in principle host one, but the README does not claim it does.
Alternatives and how their approach differs
The most direct alternative named in the repository itself is MicMac, integrated through the exploratory MeshroomMicMac plugin. MicMac is described as a mature open-source photogrammetric software developed by the French mapping agency IGN and the National School of Geographic Sciences. The difference in approach is that MicMac is a photogrammetric tool first, with its own command-line workflow, while Meshroom is a framework that can host MicMac's algorithms as nodes. If you want MicMac's specific algorithms and are comfortable with its native interface, the plugin is a way to run them inside a graph; if you want MicMac on its own terms, you do not need Meshroom at all. The other alternatives are the plugins in the MeshroomHub organisation. MrDepthEstimation adds nodes for AI-based monocular depth estimation from image sequences, which is a different reconstruction strategy: it predicts depth from single images rather than relying on multi-view geometry. MrGSplat adds nodes for 3D Gaussian Splatting, producing splat representations from multi-view images and rendering new viewpoints, which is a different output format from a mesh. MrRoma adds nodes for dense feature matching using foundation models, aimed at matching under extreme variations in scale, illumination, viewpoint and texture. These are not competitors to Meshroom so much as alternative pipelines that run inside it, which is the framework's core argument: the toolbox stays, the algorithms change.
Maintenance, releases and what upgrading costs
The repository is not archived, and the last push was on 2026-09-15, so the develop branch is receiving commits. That is a statement about the branch, not a guarantee about any particular release. The release history shows a nightly build from 2026-06-09, a tagged release v2025.1.0 from 2025-08-19, and v2023.3.0 from 2023-12-11. The gap between v2023.3.0 and v2025.1.0 is roughly twenty months, which tells you that tagged releases are infrequent even when the branch is active. If you depend on a tagged release, plan for long intervals between them and expect to track the develop branch or the nightly build for fixes. The README does not document a migration path between releases, and CHANGES.md is present at the top level but its contents are not reproduced in the README. Upgrading also means re-checking the pinned dependencies: PySide6 is pinned exactly, and the markdown and requests pins differ by Python version, so a Python upgrade can change which versions of those packages you get. On licensing, the repository carries LICENSE-MPL2.md and COPYING.md while the repository metadata reports NOASSERTION. The README does not reconcile these, and the bundled plugins live in separate repositories with their own licences. Anyone planning to redistribute Meshroom or ship it inside a product should read those files directly rather than relying on the metadata field.
Editorial conclusion
Meshroom suits engineers and artists who want a visual pipeline for photogrammetry, camera tracking, HDR fusion or panorama stitching, and who are comfortable reading node documentation rather than a single tutorial. Teams that need a fully scripted, headless pipeline should confirm the command-line entry points and renderfarm setup before committing, because the README points to the manual and INSTALL.md instead of documenting those paths inline. Before adopting it, verify the CUDA requirement for the AliceVision nodes, check that your input images match the supported formats, and read the manual's pipeline overview to understand which nodes are cached and which are re-run.
Frequently asked questions
Is Meshroom free to use?
The repository is public and the README describes it as open source, with LICENSE-MPL2.md and COPYING.md at the top level. The repository metadata reports NOASSERTION for the licence, and the bundled plugins live in separate repositories, so the exact terms for a given component should be read from those files.
What is Meshroom software?
Meshroom is described in its README as an open-source, node-based visual programming framework for creating, managing and executing data processing pipelines. Official releases ship with plugins, including AliceVision for 3D reconstruction, camera tracking, HDR fusion and panorama stitching.
How to install Meshroom?
The README gives two options: download pre-compiled binaries for the latest release from the GitHub releases page, or build it yourself following INSTALL.md. Custom plugins are covered separately in INSTALL_PLUGINS.md.
How to use Meshroom for photogrammetry?
The README describes choosing a template from the AliceVision plugin, adding images through the Image Gallery, and executing the graph, with results visible in the 2D and 3D Viewer. The step-by-step pipeline overview is in the Meshroom Manual rather than the README.
How to use Meshroom without CUDA?
The README does not state which AliceVision algorithms require a GPU, and requirements.txt lists only Python-level packages such as psutil, PySide6, markdown, requests and pyseq. Any GPU dependency would come from the AliceVision plugin or its binaries, so this cannot be answered from the README alone.
Is Meshroom still good?
The repository is not archived and the last push was on 2026-09-15, with a nightly build from 2026-06-09 and a tagged release v2025.1.0 from 2025-08-19. Tagged releases are infrequent, so depending on a stable tag means waiting between versions while the develop branch moves.
Community notes