MeshVault
A professional, local web-based tool for rapidly browsing, previewing, and managing 3D assets across your filesystem — including assets inside archives.
Supported Formats
| 3D Models | Archives |
|---|---|
.obj, .fbx, .gltf, .glb, .stl, .ply, .dae, .3mf, .usdz |
.zip, .rar, .unitypackage |
Older FBX files (version < 7000) are auto-converted to OBJ by a built-in zero-dependency parser. .usdz is import-only.
Features
| Category | Features |
|---|---|
| Browsing | Sidebar tree, list/grid view with rendered thumbnails, sort, filter, remember last directory |
| Library | Cross-folder search, tags & collections, recent files (all backed by a local index) |
| File Management | Right-click: rename (inline), duplicate, delete, show in file manager |
| 3D Viewer | PBR rendering, SSAO, soft shadows, ACES tone mapping, orbit + FPV drone navigation |
| Toolbar | Screenshot, grid, axes (XYZ), wireframe, normals viz, texture folder picker, material inspector, lights, measure |
| Animation | Play/pause, scrub, speed, clip selector for animated GLB/FBX/Collada |
| Transforms | Reload, reset, center, ground, auto-orient (PCA), rotate ±90° per axis |
| Mesh Ops | Simplify (edge collapse LOD, UV-preserving), recompute smooth normals (UV-preserving) |
| Textures | Folder picker with smart matching (convention + fuzzy name) for separated texture packs |
| Export | Save As dialog, folder browser, modified models export as OBJ/GLB with baked transforms |
| Extras | Drag-and-drop load, measurement, 12 background presets, scale, persistent settings |
| AI agents | Self-describing JSON control API (/llms.txt), describe_scene text snapshots, and an MCP server (meshvault-mcp) for Claude/Cursor — see docs/mcp.md |
| Security | Loopback bind, session-token auth, path confinement to an allowed root (see below) |
Quick Start
git clone https://github.com/lpalbou/meshvault.git
cd meshvault
poetry install --no-root
poetry run meshvault
Open http://localhost:8420 · Also: pip install meshvault or npx meshvault
MeshVault binds to 127.0.0.1 and requires a session token on every /api/* request.
By default it can browse your whole filesystem (opening at your home directory) — the
network protections (loopback + token + Host allow-list) are what keep it private.
Set MESHVAULT_ROOT=/path[:/path2] to restrict file access to specific directories.
Configure MESHVAULT_HOST (bind host) and MESHVAULT_TOKEN as needed. Opening the URL on
the same machine authenticates automatically; other devices need the token from the launch
banner. See API Reference.
Control MeshVault with AI agents
MeshVault is built to be driven by agents, not just humans. Three entry points, from lightest to most integrated:
- Self-describing JSON control API — the viewer exposes one entry point,
execute({action, params}), with ~48 discoverable commands (listCommands()), plusdescribe_scene: a structured text snapshot (inventory, size, materials, geometry-QA issues, current view) so a text-only agent can reason without screenshots. Agent-ready reference served at/llms.txtand/llms-full.txt. - MCP server —
meshvault-mcplets Claude Desktop / Claude Code / Cursor drive a headless viewer natively through 6 tools: load a model by URL or local file path, describe it, run any viewer command, and get PNG screenshots back as image content (best_view: truegives a one-call hero shot). Setup: docs/mcp.md. - Embeddable standalone viewer —
meshvault-viewer.jsis a server-less ES-module bundle (Three.js included, offline, compressed-glTF decoders bundled) exposing the same control API for your own pages or agent harnesses.
Typical agent flow: load → describe_scene → find_best_view (finds the model's
semantic front and uprights it) → set_render_mode / set_clip to inspect →
screenshot.
Documentation
- Getting Started — Installation, UI overview, complete feature guide
- Architecture — System design, components, rendering pipeline
- API Reference — REST API (14 endpoints)
- MCP Server — Drive the viewer from Claude/Cursor via Model Context Protocol
- FAQ — Troubleshooting and tips
License
MIT — © 2026 Laurent-Philippe Albou — contact@abstractcore.ai
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meshvault-0.3.1.tar.gz.
File metadata
- Download URL: meshvault-0.3.1.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
abc54e6c0057f29c0a6454c029c7ddf9d9087d6c87605d10d0ac1f904a290b48
|
|
| MD5 |
a567b4bce38c9eaedc0349187603206e
|
|
| BLAKE2b-256 |
b0fb538edd28d3fe7e968350d0e9cd2c6f24dae502a6284b32a97e1acd2343af
|
Provenance
The following attestation bundles were made for meshvault-0.3.1.tar.gz:
Publisher:
release.yml on lpalbou/MeshVault
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meshvault-0.3.1.tar.gz -
Subject digest:
abc54e6c0057f29c0a6454c029c7ddf9d9087d6c87605d10d0ac1f904a290b48 - Sigstore transparency entry: 2090826182
- Sigstore integration time:
-
Permalink:
lpalbou/MeshVault@3949fe59f9254e80e01603875b408f60e9c3a510 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/lpalbou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3949fe59f9254e80e01603875b408f60e9c3a510 -
Trigger Event:
push
-
Statement type:
File details
Details for the file meshvault-0.3.1-py3-none-any.whl.
File metadata
- Download URL: meshvault-0.3.1-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d65e7a096fdd3a5e473f5199f96cde7f93d0ab570797416b3a9cb971a0e5de0
|
|
| MD5 |
2987d10b91f3d2c58709e6090c28ddb0
|
|
| BLAKE2b-256 |
595703eee062e5abf4bb5e9c30ac588f8b3014c90db362bb6f41e8e824e36a72
|
Provenance
The following attestation bundles were made for meshvault-0.3.1-py3-none-any.whl:
Publisher:
release.yml on lpalbou/MeshVault
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meshvault-0.3.1-py3-none-any.whl -
Subject digest:
9d65e7a096fdd3a5e473f5199f96cde7f93d0ab570797416b3a9cb971a0e5de0 - Sigstore transparency entry: 2090826312
- Sigstore integration time:
-
Permalink:
lpalbou/MeshVault@3949fe59f9254e80e01603875b408f60e9c3a510 -
Branch / Tag:
refs/tags/v0.3.1 - Owner: https://github.com/lpalbou
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3949fe59f9254e80e01603875b408f60e9c3a510 -
Trigger Event:
push
-
Statement type: