Their exporter
The generator creates the package using its own language, framework and ZIP library.
Open packaging format · No API required
Keep the generator’s normal exports. Add one more action that places its existing model bytes, available details and optional images into a standard ZIP named .mvpack.
The generator creates the package using its own language, framework and ZIP library.
Reuse the STL, 3MF or other supported bytes it already produces. Do not rewrite its geometry.
Title, settings, thumbnail and gallery images are optional. Missing features never block export.
Minimum integration
An .mvpack is an ordinary, unencrypted ZIP. A generator with no thumbnail, settings or rich metadata can still produce a useful package.
Generated-Model.mvpack
├── Generated-Model.stl
└── meshvault.model.json{
"schema": "meshvault.model",
"version": 1,
"title": "Generated Model"
}Optional reference files
Add instructions, PDFs, JSON generation parameters or other files to the ZIP and list their portable paths in documentFiles. MeshVault attaches them to the imported model and shows them through Documents or Related files.
Generated-Model.mvpack
├── Generated-Model.3mf
├── meshvault.model.json
└── documents/
└── instructions.pdf{
"schema": "meshvault.model",
"version": 1,
"title": "Generated Model",
"documentFiles": [
"documents/instructions.pdf"
]
}Each model can include up to ten attachments of any file type, up to 10 MiB each. PDF files must have a PDF signature. Generation parameters remain attached files; MeshVault does not regenerate a model from them.
No Base64 required
Put image bytes into the ZIP and reference their paths. This works with browser Blobs, Canvas PNGs, uploaded files and server-rendered images.
Generated-Model.mvpack
├── Generated-Model.3mf
├── meshvault.model.json
└── images/
├── thumbnail.png
├── front.jpg
└── detail.webp{
"schema": "meshvault.model",
"version": 1,
"title": "Generated Model",
"thumbnailFile": "images/thumbnail.png",
"extraImageFiles": [
"images/front.jpg",
"images/detail.webp"
]
}PNG, JPEG, BMP, GIF and WebP are accepted, up to 50 MiB per image. Prefer file references for new integrations. Existing Base64 remains supported through thumbnailDataBase64 and extraImageDataBase64.
Progressive enhancement
The complete field definitions, exact types, Base64 alternative, supported model formats and full JSON example are in the Markdown specification.
View every metadata fieldSeparate model and generator credit
author is the model designer. generatorName names the generating site or tool. An optional exportDonationUrl supplies its HTTPS support page, without credentials.
{
"schema": "meshvault.model",
"version": 1,
"title": "Generated Vase",
"author": "Model designer",
"generatorName": "Example Generator",
"exportDonationUrl": "https://example.org/support"
}Details show “Created by [author]”, “Generated with [generator]” and a discreet “Support [generator]” link. It opens only when clicked. Omit unknown authors and optional support links. The old donationUrl spelling is unsupported.
Never export printedStatus. It is personal library state. Printing advice and printSettingsJson remain supported.
Complete model exports
Package OBJ material files and texture maps, and glTF/GLB external buffers and images with their relative layout. Embedded data needs no extra file. Missing resources, remote or absolute references, and conflicting contents fail visibly.
ZIP paths cannot contain traversal segments. References inside model files may use relative parent segments only while they stay inside the package and library. Exact filename casing matters. Existing resources with different bytes are never overwritten.
Ready-to-import example
The original 110 mm vase example contains a 3MF, thumbnail, gallery image, metadata, print notes and JSON generation parameters. Generator branding and support URLs are clearly labelled placeholders.
Download sample .mvpackMeshVault is downloadable software released for Windows, Linux and macOS. Use a build with current package and generator-attribution support. Core import, model loading and re-export are checked; desktop link placement and physical printing need manual verification.
Portable paths
model.stlImports to ReviewNo folder was declared, so the user chooses where it belongs.
Generated/Example/model.stlGenerated › ExampleThe declared path is restored from the MeshVault library root.
Always use /. Never use drive letters, absolute paths, a leading slash, or . and .. segments.
Optional multi-model form
When one export intentionally produces several independent library items, use meshvault.models.json with one metadata object per model. Each object identifies its fileName and exact portable relativePath.
Declare packType: "collection" for separate items, or packType: "project" for one retained archive with accessible parts. Put a project's shared title, description, images and documents in the root project object. Import options cannot change that identity.
A project without a declared folder enters Imports to Review. Only project.relativePath, such as Furniture/riser.mvpack, sets its library location; internal part folders do not. Unmarked packages keep their legacy behaviour. Project support requires an updated MeshVault build.
Try custom author credits, support links and a YouTube guide in Bracket Works →
Read the project manifest example · Try the assembly project demo
{
"schema": "meshvault.models",
"version": 1,
"packType": "collection",
"models": [
{
"schema": "meshvault.model",
"version": 1,
"title": "Base",
"fileName": "base.stl",
"relativePath": "Parts/base.stl"
},
{
"schema": "meshvault.model",
"version": 1,
"title": "Lid",
"fileName": "lid.stl",
"relativePath": "Parts/lid.stl"
}
]
}Framework independent
Identify the function that produces the final Blob, byte array, stream, buffer or file.
Use real values already held by the generator. Omit everything else.
Add model bytes, dependencies, JSON metadata, images and attached files.
.mvpackUse MIME type application/vnd.meshvault.package+zip.
Use the project’s existing ZIP library. Browser JavaScript or TypeScript projects without one should use fflate or JSZip, including a pinned local copy for no-build sites. Do not hand-write ZIP records. No MeshVault-specific package is required.
Acceptance checks
.mvpack./ and contain no traversal.Built for coding assistants
The Markdown version includes the complete contract, field table, package examples, pseudocode, browser notes, supported extensions and a copyable implementation task.