Skip to content

Repository files navigation

Plinth

GitHub Release GitHub Issues GitHub Stars GitHub Downloads Contributions Welcome Built with Tauri

Plinth is an opinionated desktop tool for cataloging, rendering, compressing, and bundling STL files "the right way". It provides an easy-to-use interface for organizing a disk-scale 3D model library and packing releases so creators can distribute them efficiently — and collectors can move their own library between systems without losing curation.

📖 Documentation: irongollem.github.io/plinth — installation, guides, and format reference.

The Plinth catalog: a scanned library browsed as preview cards, grouped by designer and release

Features

  • Catalog a disk-scale library — scan one or many root folders into a searchable catalog with full-text search, tags, designers, and releases, plus duplicate detection across the whole library.
  • Curate once, keep forever — names, poses, variants, scale, support status, base sizes, and previews are metadata that travels with the files (via model.json sidecars) rather than living in folder names.
  • Render preview images — turntable-style renders through a managed Blender install, in batches, with a locked studio look and optional branding overlay.
  • Prepare models for the plate — cut model bases to fit your plinths, generate landscape bases, and scatter forest-floor terrain.
  • Save space — lossless compression and "packed at rest" storage that unpacks on demand, so a terabyte library costs less on disk.
  • Distribute and move models — pack releases in the verified .3pk format with selective, checksum-verified import and delta updates.
  • Cross-platform — Windows, macOS, and Linux.

Render studio: orient a multi-part mini and render a studio preview through Blender

Base Cutter: generate a landscape base with scattered terrain and cut models to fit

Installation

Download the latest release for your platform from the releases page:

  • WindowsPlinth_<version>_x64-setup.exe
  • macOSPlinth_<version>_universal.dmg (Apple Silicon and Intel)
  • Linux.AppImage, .deb, or .rpm

Important

Plinth is currently unsigned, so your operating system will warn you the first time you install or run it. Code-signing certificates cost hundreds of euros per year, which we've chosen not to spend on a free beta — the trade-off is one extra click for you:

  • Windows: SmartScreen shows "Windows protected your PC" — click More info, then Run anyway.
  • macOS 15+: the app is blocked with "Apple could not verify…" — click Done, then open System Settings → Privacy & Security, scroll down, and click Open Anyway. (On macOS 14 and earlier, right-click the app → OpenOpen is enough.)
  • Linux: no warnings; make the AppImage executable first (chmod +x Plinth_*.AppImage).

These warnings only mean the build isn't registered with Microsoft or Apple — not that anything is wrong with it. Plinth is open source and every release is built in public by GitHub Actions from a tagged commit, so you can audit exactly what you're running.

See the installation guide for step-by-step instructions, updating, and troubleshooting.

Usage

  1. Point Plinth at the folder(s) where your STL library lives and let it scan — models, releases, designers, and poses are inferred as it goes.
  2. Browse, search, and tag your catalog; edit names, poses, scale, and support status where the inference needs a hand.
  3. From a model, render preview images, cut a base to fit your plinth, or generate terrain — and compress folders you're not actively printing.
  4. Select models, + Add to release, and pack a checksum-verified .3pk to distribute your work or move your collection between systems.
  5. Import a .3pk from another creator to add their models — with their curation intact — to your catalog, taking only the components you want.

Our Philosophy

Plinth is an opinionated tool, and we believe in "the right way" to manage and distribute 3D printable files. This means:

  • Efficiency: Optimizing file sizes without compromising detail, making distribution and storage easier.
  • Organization: Bundling models, metadata, and previews into a clear, structured format (.3pk).
  • Reproducibility: Ensuring that users have all the information needed to understand and use the models.

(Project maintainers: Please expand this section with more specific details about the design choices and goals of Plinth!)

Recommended IDE Setup for Development

Type Support For .vue Imports in TS

Since TypeScript cannot handle type information for .vue imports, they are shimmed to be a generic Vue component type by default. In most cases this is fine if you don't really care about component prop types outside of templates. However, if you wish to get actual prop types in .vue imports (for example to get props validation when using manual h(...) calls), you can enable Volar's Take Over mode by following these steps:

  1. Run Extensions: Show Built-in Extensions from VS Code's command palette, look for TypeScript and JavaScript Language Features, then right click and select Disable (Workspace). By default, Take Over mode will enable itself if the default TypeScript extension is disabled.
  2. Reload the VS Code window by running Developer: Reload Window from the command palette.

You can learn more about Take Over mode.

Contributing

Contributions are welcome! Please read the contributing guidelines first.

Development Status & Roadmap

Plinth is under active development! We are constantly working on new features and improvements. You can follow our progress and see planned features in our To-Do List.

License

This project is available under a custom source-available license that allows:

  • Free usage for personal, educational, and commercial purposes
  • Creating and selling content/bundles made with the software

But prohibits:

  • Selling or redistributing the software itself
  • Creating derivative works based on the software

See LICENSE.md for the complete license terms and THIRD_PARTY_NOTICES.md for information about included components.

The .3pk release format

Plinth packs and imports releases in its own modular format: a small release.3pk (metadata, previews, licence, and a checksum for every file) next to one component archive per model or group. Because every component carries its own BLAKE3 checksum, importing is verified end-to-end, users can pick exactly which models to import, and opening a newer version of a release they already have offers only the components that actually changed — an update to one model never means re-downloading or re-importing the whole release.

Distributing and moving models

Models leave a Plinth catalog for two reasons, and the release builder serves both: creators distributing their own work (select models, "+ Add to release", fill in the details, pack — customers import the .3pk and get the models with your curation: names, poses, scale, support status, previews) and moving your own collection between your systems, either by packing releases for a checksum-verified transfer or simply by copying the library folders and rescanning (the model.json sidecars carry the curation). Plinth moves files, it doesn't grant rights — distribution features exist for creators publishing their own models, not for passing along purchased ones.

You may also see model.plinthpack files inside your own library — that's the space-saving "packed at rest" storage, not a distribution format. Don't send those to anyone; they're an internal detail that only your own catalog (via its pack.json sidecar) knows how to read, and the format may change between app versions. A packed model needs to be unpacked before it can be staged into a release.

  • Format specification — the frozen v1 manifest schema, deduplication rules, and import semantics.
  • Creator guide — what packing produces, how updates reach your users, and practical tips for structuring a release.
  • Catalog internals — how imported releases and scanned folders become the searchable library.

About

Opinionated desktop app to catalog, render, and distribute a disk-scale 3D-printable STL library

Topics

Resources

Contributing

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages