meshlite
A desktop 3D mesh processing application with a VSCode-inspired interface, powered by MeshLib, moderngl, and Dear ImGui.
Features
15 mesh operations with full parameter control:
| Category | Operations |
|---|---|
| File | Open (STL / OBJ / PLY / GLB / OFF / 3MF), Save As |
| Repair | Fill Holes, Auto Repair, Remove Duplicates |
| Inspect | Mesh Info, Find Self-Intersections (Local + Voxel) |
| Mesh Edit | Decimate, Remesh, Subdivide, Laplacian Smooth |
| Boolean | Union, Intersection, Difference |
| Transform | Translate, Rotate, Scale, Mirror |
Professional UI:
- MeshInspector-style top toolbar with grouped icon buttons
- Activity bar + collapsible sidebar (Outliner, Operations, Search, Settings)
- Properties panel with auto-rendered parameter widgets
- Command palette with fuzzy search (
Ctrl+Shift+P) - Mesh Info panel with topology, geometry, and bounding box statistics
- Snapshot-based undo/redo (
Ctrl+Z/Ctrl+Shift+Z) - VSCode "Dark+" theme with codicon glyphs
- Drag-and-drop file loading (GLFW backend)
- Recent files list (File menu + command palette)
- Persistent user preferences (viewport, rendering, camera, history)
Architecture:
- Adding a new operation is a single-file change — zero edits to UI, toolbar, or registry
- 5-layer separation:
domain/ops/render/app_state/ui - Async worker dispatch — operations run on background threads
- 85 automated tests with architecture rule enforcement
- Cross-platform CI (Linux, Windows, macOS)
Install
From PyPI
pip install meshlite
meshlite
From source
git clone https://github.com/syedjameel/meshlite.git
cd meshlite
uv venv --python 3.13 .venv && source .venv/bin/activate
uv pip install -e ".[dev]"
python main.py
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+Shift+P |
Command palette |
Ctrl+O |
Open mesh |
Ctrl+S |
Save mesh as |
Ctrl+Z |
Undo |
Ctrl+Shift+Z |
Redo |
F |
Frame all (fit viewport) |
| Drag file onto window | Load mesh |
User Preferences
All settings are persisted automatically between sessions:
- Viewport: Rotate / zoom / pan sensitivity
- Rendering: Background color, mesh color, selected color, lighting (ambient, specular)
- Camera: Field of view
- History: Undo depth, memory cap
Access via the Settings panel in the sidebar (gear icon in the activity bar).
Adding a New Operation
meshlite's architecture makes it trivial to add operations. Create one file:
# src/meshlite/ops/smooth/laplacian.py
@register_operation
class LaplacianSmoothOperation(Operation):
id = "smooth.laplacian"
label = "Laplacian Smooth"
category = "Mesh Edit"
schema = ParamSchema((
Param("iterations", "int", "Iterations", default=3, min=1, max=100),
Param("force", "float", "Force", default=0.5, min=0.01, max=1.0),
))
def run(self, mesh, params, ctx):
# ... meshlib calls ...
return OperationResult(mesh=mesh, message="Smoothed")
The operation automatically appears in the command palette, sidebar, properties panel, and toolbar — with zero edits to any other file.
Architecture
ui ───> app_state ──> ops ──> domain
| | |
└─> render ─┘ └──> domain
| Layer | Responsibility | Dependencies |
|---|---|---|
domain/ |
MeshLib wrapper (mrm_shim.py), mesh data, I/O |
meshlib, numpy |
ops/ |
Operations framework, registry, auto-discovery | domain |
render/ |
moderngl renderer, GPU mesh, camera, shaders | domain (read-only) |
app_state/ |
Document, CommandBus, undo, events, preferences | domain, ops |
ui/ |
ImGui panels, theme, toolbar, command palette | all layers (except domain directly) |
Tech Stack
- Python 3.11+
- MeshLib — mesh processing engine (GPL-3)
- imgui_bundle — Dear ImGui + hello_imgui
- moderngl — OpenGL rendering
- numpy + PyGLM
Contributing
See CONTRIBUTING.md for development setup, code style, and how to add operations.
License
GPL-3.0-or-later — matches MeshLib's license.
Metadata
Release files for meshlite 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| meshlite-0.3.0.tar.gz | 171.0 kB | Without provenance | Details for meshlite-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| meshlite-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for meshlite-0.3.0-py3-none-any.whl |
Total release size: 364.1 kB
Release files / meshlite-0.3.0.tar.gz
| Download URL | meshlite-0.3.0.tar.gz |
|---|---|
| Size | 171.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0c9c5b9cc08d19ba7f35d8f9acb37beedb4c757415432bb1a7c4904363c9b11c
|
|
BLAKE2b-256 checksum How to use checksums |
ac7d8ce29d99020b8187188a0ed611b636bfb59b8ec2a6c41857604176ec804c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1
|
Release files / meshlite-0.3.0-py3-none-any.whl
| Download URL | meshlite-0.3.0-py3-none-any.whl |
|---|---|
| Size | 193.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
31c38f1df646c7342a1e24a3d30ec0d77bb1c8630e30dff33027f08830bfdcec
|
|
BLAKE2b-256 checksum How to use checksums |
76ed388470ff49ee500dd530b292226658088b65f1ae9cf621cc1b4f3e5e4a03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.16.5 cpython/3.12.3 HTTPX/0.28.1
|
Security for meshlite 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.