- Category
- AI Tools
- Rank
- No. 859Tools index
Previous survey · No. 851 ·
- Pricing
- Open Source
- Type
- APP
- Use case
- Design & Media
- Interfaces
- CLI · Desktop
- Builder
- lightningpixel
- GitHub
- 8.6k stars
- Latest release
- v0.4.3
- Date
About
Modly is a desktop application for Windows, Linux, and Apple Silicon macOS that generates 3D meshes from photographs or text prompts. It runs open-source image-to-3D models locally on the user's own GPU, so nothing is uploaded to a hosted service. A stdlib-only CLI lets scripts and agents drive a running Modly instance without touching the UI.
What it does
Modly turns a single photo into a 3D mesh on your own machine. A desktop shell starts a local Python web service, and each model ships as a separate extension that runs in its own isolated Python environment as a child process. You wire steps such as image, generate mesh and add to scene into a workflow, then smooth, decimate or export the result. A local API, a command-line helper and a Model Context Protocol (MCP) server let scripts and agents trigger the same jobs without opening the window.
Why it's ranked here
Few local image-to-mesh tools are this complete. Modly ships installers for Windows, Linux and Apple Silicon Macs, five official model extensions including Hunyuan3D 2 Mini, TripoSG and Trellis2, and three automation surfaces for agents. The engineering shows care in the places that usually break: workspace folder names are checked so output cannot escape the workspace, cancelling a job kills the model process so the GPU stops at once, and a written design decision covers memory limits on 16 GB Macs. MIT licensed, with Python and Node test suites wired into the test command.
What's good
Model isolation is the strongest choice. Each extension gets its own environment and talks to the app over plain line-by-line JSON, so one model's dependencies cannot break another, and unloading means ending the process, which the Mac design notes call the only reliable way to free GPU memory. Auto-repair of a missing package is deliberately narrow: it maps only known module names rather than guessing. Live progress bars from models are forwarded character by character so the log pane stays current during long phases. The command-line helper returns machine-readable JSON with run status and cancel hints for recovery.
Tradeoffs
The local web service allows requests from any browser origin and serves workspace files by path, so anything running in a local browser can reach it while Modly is open. Installing an extension means running that repository's own model code on your machine. Mac builds are Apple Silicon only, with Intel and Rosetta out of scope, and the packaging scripts switch off automatic code-signing discovery. The MCP server still drives the older job endpoints the README labels legacy. NVIDIA Jetson is not officially targeted; the community guide needs a hand-swapped PyTorch, older NumPy and a patched background remover. The license adds a request to credit Modly visibly in any fork.
How to use it well
Pick it if you want photo-to-mesh generation on your own GPU and are happy to install models from GitHub repositories you trust. Start with the simple image, generate mesh, add to scene workflow and check the logs panel when something fails. For pipelines, use the command-line generate command, which starts a run, polls it and exports the mesh in one call. Agent users can point an MCP client at the bundled server, but the app must already be running. The backend also runs headless over HTTP. It does not cover text-to-3D in the fetched code, and textures need extra native builds on Jetson.
Technical notes+
api/main.py mounts FastAPI routers for model, generate, optimize, extensions, export and workflow-runs, adds CORSMiddleware with allow_origins ["*"], and exposes GET /workspace/{full_path:path} returning FileResponse after an existence check. api/services/extension_process.py launches api/runner.py from each extension's venv with EXTENSION_DIR, MODELS_DIR, WORKSPACE_DIR and MODEL_DIR env vars, retries startup up to three times, and only auto-installs packages listed in _AUTO_REPAIR_PACKAGE_MAP (PIL to Pillow); on darwin it sets PYTORCH_ENABLE_MPS_FALLBACK and NUMBA_DISABLE_JIT. api/runner.py dynamically imports the extension's generator module and speaks load, generate, cancel, unload and shutdown over newline-delimited JSON. api/routers/generation.py keeps jobs in an in-memory dict purged 1800 seconds after completion, validates remesh against quad, triangle or none, and sanitize_collection rejects reserved characters, trailing dots or spaces, and anything resolving outside WORKSPACE_DIR. api/mcp_server.py exposes nine tools against http://localhost:8765 using the /generate endpoints. api/services/generator_registry.py serialises legacy in-process extensions with _LegacyImportManager to isolate sys.modules. electron/main/index.ts reconciles interrupted extension installs before starting the Python bridge and quits on window close. package.json targets NSIS, arm64 dmg and AppImage with electron-updater. docs/running-on-jetson.md and arch/decisions/APPLE-SILICON-SUPPORT.md document platform constraints.
Observed
- License
- MIT, with an added request to credit the original project visibly in forks
- Language
- TypeScript Electron and React desktop shell with a Python FastAPI backend
- Packaging
- Windows NSIS installer, Apple Silicon macOS dmg, Linux AppImage; launch scripts for running from a clone
- Platform support
- Windows, Linux and Apple Silicon macOS; Intel macOS out of scope; Jetson unofficial via a community guide
- Interfaces
- Desktop GUI, local HTTP API, stdlib-only Python CLI, MCP server over stdio
- Extension model
- Model extensions are GitHub repositories with a manifest, run in their own venv as a subprocess speaking newline-delimited JSON
- Tests
- npm test runs both a Python test suite and Node test files
- Local API CORS
- Backend allows all origins, methods and headers
Read from README.md, package.json, LICENSE, api/main.py, api/requirements.txt, api/mcp_server.py, api/runner.py, api/services/generator_registry.py, api/services/extension_process.py, api/routers/generation.py, electron/main/index.ts, docs/running-on-jetson.md, arch/decisions/APPLE-SILICON-SUPPORT.md.
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.