Manyfold: a self-hosted manager for 3D print files
A self-hosted digital asset manager for 3d print files.
At a glance
- What is it?
- Manyfold is an AGPL-3.0 Ruby on Rails application that indexes a 3D model collection, generates previews, and serves it over plain HTTP. It suits people with a growing STL and 3MF archive, and it is not a slicer.
- Who is it for?
- Adopt Manyfold if you already have a folder of STL and 3MF files that has outgrown manual naming, and you are willing to run a Rails app with PostgreSQL and Sidekiq. Do not adopt it as a slicer, and do not expect it to repair meshes.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Ruby, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Manyfold solves for people with too many STL files
A 3D printing folder usually starts as a handful of files and ends as thousands, named by download site, with no consistent structure. Manyfold is a self-hosted web application for managing such a collection, with 3D printing as the focus. It gives the archive a database: models become records with names, creators, tags and licences, and the file tree becomes something you browse rather than something you grep.
The intended user is someone running their own server. The repository carries a docker-compose.example.yml and a docker/ directory, and the README points to manyfold.app for installation and administration guides. That is the deployment path the project expects. Running it from source is also documented, but it assumes a developer toolchain rather than a home server.
It is not a slicer and it does not prepare files for a printer. The README describes asset management, and the topics attached to the repository are digital-asset-management, self-hosted and stl-files. If your problem is that Cura or PrusaSlicer will not open a mesh, Manyfold is the wrong tool.
Rails, Sidekiq and two separate 3D pipelines
The README is unusually explicit about architecture, which makes the data flow easy to follow. Manyfold is a Ruby on Rails application that serves plain HTTP requests. There is no XHR, no WebSocket and no other interactive transport in the codebase, so every page is a normal request and response. Anything slow is pushed to a background job runner built on Sidekiq.
That split matters for how the app feels. Scanning a library, extracting metadata, and generating thumbnails are asynchronous. The web process stays responsive while Sidekiq works through the queue, and the README notes that PostgreSQL is the production database while sqlite3 is used in development. The two are not interchangeable in a deployment, and this is the first place a self-hoster can get into trouble.
3D rendering happens twice, in two different languages. Client-side rendering uses THREE.js through TypeScript, so previews run in the browser. Server-side 3D code uses Mittsu, a Ruby port of THREE.js. The 3MF loader is a separate package, threejs-webworker-3mf-loader, pinned in package.json to a specific commit on the manyfold3d GitHub organisation rather than to a released version. That is a deliberate choice and also a maintenance liability: the dependency tracks a branch point, not a tag.
File analysis depends on external binaries. The README lists libarchive for upload support, imagemagick for image thumbnail generation, and assimp for model file analysis. None of these are Ruby gems. They are system packages, and a container image that omits one will fail at a specific stage rather than at startup.
Installing Manyfold with Docker and adding a first model
The README defers installation to manyfold.app and does not inline the steps, so the exact compose file contents are not reproduced here. What the repository does provide is docker-compose.example.yml at the top level and a docker/ directory, which is where a self-hoster should start. Copy the example and adjust it before running anything.
The development path is documented in full and is worth reading even if you deploy with Docker, because it names every dependency. It requires Ruby 3.4, Bundler 2.6 or later, Node.js 24.18.1, Yarn 3.8 or later, Foreman or another Procfile runner, plus libarchive, imagemagick, ngrok and assimp.
git clone https://github.com/manyfold3d/manyfold.git
cd manyfold
bin/devThe README states that bin/dev sets up the database, performs migrations, installs dependencies, and makes the application available at http://127.0.0.1:3214. If you see that address respond, the app server and the asset pipeline are both working.
Optional features are configured through environment variables in a file called .env.development.local, and env.example is the template. The README notes that the required variables listed in the documentation are not needed in development mode because development uses SQLite instead of PostgreSQL. That is a trap for anyone who develops against SQLite and then deploys against PostgreSQL: the two paths do not exercise the same configuration.
One more development detail worth knowing before you clone. bin/dev also expects to start a pre-configured ngrok tunnel named manyfold, used for ActivityPub federation. If you do not want that, the README says to remove the line from Procfile.dev. The tunnel configuration goes in your ngrok config file:
endpoints:
- name: manyfold
url: https://{your-ngrok-url-here}
upstream:
url: 3214If you would rather not install any of this locally, the README also documents a devcontainer configuration for Visual Studio Code's Remote - Containers extension, which requires Docker and the extension. The steps are to clone the repository, open it with code ., and click Reopen in Container when prompted. There is also a hosted demo at try.manyfold.app, which is the fastest way to see whether the interface matches how you think about your library.
Where Manyfold gets in the way
The deployment surface is the first real cost. PostgreSQL is the production database, and Sidekiq means a second long-running process alongside the web server. That is a normal Rails deployment, but it is more moving parts than a single-binary tool, and it is why the project ships a compose example rather than a one-line installer.
The system dependencies are the second cost. libarchive, imagemagick and assimp are separate packages with their own version requirements, and the README does not state which versions are supported. A container image handles this for you; a bare-metal install does not.
The interaction model is the third. The README says plainly that the app uses plain old HTTP requests and that there is no XHR, WebSocket or other interactive communication in the codebase yet, though it could come later. Long scans therefore complete out of band, and the page you are looking at does not update itself. Anyone expecting a live progress bar should read that sentence before deploying.
Finally, the 3MF loader is pinned to a commit rather than a release. If that repository changes in a way that breaks the app, the version in package.json will not move on its own. Upgrades are a deliberate act, not something you can leave to a dependency bot.
How Manyfold differs from a slicer and from a plain file share
The obvious alternative is to keep the files on a NAS share and browse them with the operating system's file manager. That approach has no database, no metadata, and no previews beyond whatever thumbnails the download sites happened to include. Manyfold's difference is the index: models are records with attributes, and the 3D preview is rendered in the browser with THREE.js rather than shipped as a static image. The cost of that difference is the stack described above.
A second comparison is with the slicer's own file browser. Cura and PrusaSlicer open a file and prepare it. Manyfold organises the library and stops there. If your workflow is open, slice, print, the slicer is sufficient. Manyfold starts to pay off when the library outlives individual print jobs and you need to find a model again months later.
The project also carries ActivityPub federation, which is unusual for an asset manager. FEDERATION.md sits at the top level of the repository, and the development setup includes an ngrok tunnel specifically to enable it. That is a genuine architectural difference from a local-only DAM, and it is also the reason the development environment asks for a network tunnel that most users will never need.
Licence, upgrades and what maintenance actually costs
Manyfold is licensed under AGPL-3.0, and LICENSE.md is at the repository root. The practical consequence of the AGPL is that if you modify the application and let other people interact with it over a network, the licence's source-disclosure terms apply to your modified version. That is a summary of the licence's intent, not legal advice, and anyone planning to run a modified instance for other people should read the licence text itself.
Upgrade cadence is visible from the releases. v0.149.0 was published on 2026-09-07, v0.148.0 on 2026-08-27, and v0.147.2 on 2026-08-14. That is a fast release rhythm with a 0.x version number, which means the project does not promise API or schema stability between versions. The last push to the repository was on 2026-09-10.
For an operator, that cadence cuts both ways. Fixes arrive quickly, and so do migrations. The README's development instructions run migrations automatically through bin/dev, but a production deployment needs its own migration step, and the README does not document a rollback procedure. The README also does not document a backup procedure. If you cannot restore your PostgreSQL database, a failed upgrade is a data-loss event, and that risk is on you to manage.
Contributors face a different cost. The project uses Rubocop with StandardRB rules, plus erb_lint for templates and yarn run lint for TypeScript. Tests run with bundle exec rake or continuously with bundle exec guard, and GitHub Actions runs them on push. Screenshot generation for documentation is off by default and requires DOC_SCREENSHOT=true.
Editorial conclusion
Adopt Manyfold if you already have a folder of STL and 3MF files that has outgrown manual naming, and you are willing to run a Rails app with PostgreSQL and Sidekiq. Do not adopt it as a slicer, and do not expect it to repair meshes. Before committing, check the configuration page at manyfold.app for the required environment variables, and confirm that libarchive, imagemagick and assimp are available on your host, because the README lists all three as dependencies for uploads, thumbnails and model analysis.
Frequently asked questions
What is Manyfold?
Manyfold is an open source, self-hosted web application for managing a collection of 3D models, with a focus on 3D printing. It is built in Ruby on Rails and licensed under AGPL-3.0.
What does "manyfold" mean?
The README does not define the name. The project's own material only uses it as the product name for the 3D model manager.
Is Manyfold a word, and is it the same as manifold?
The README does not discuss the spelling or the relationship to the word manifold. Nothing in the repository addresses it, so the project itself offers no answer here.
What is the best self-hosted 3D print manager?
The README does not compare Manyfold with other tools, so it makes no claim about being the best. It describes itself as an open source, self-hosted web application for managing 3D models, with installation and administration guides at manyfold.app.
How can I organize my 3D print files with Manyfold?
Manyfold stores your models as records in a database and serves the collection through a web interface, with previews rendered in the browser using THREE.js. The README points to manyfold.app for the user guide that covers day-to-day library management.
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/manyfold3d-manyfold)