{"id":21406015,"url":"https://github.com/jes/meshmill","last_synced_at":"2025-09-19T17:06:58.384Z","repository":{"id":45300744,"uuid":"480870317","full_name":"jes/meshmill","owner":"jes","description":"The world's greatest open source 3D CAM software. (Maybe one day.)","archived":false,"fork":false,"pushed_at":"2023-09-30T19:01:47.000Z","size":40148,"stargazers_count":45,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-13T23:38:22.900Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-12T15:34:51.000Z","updated_at":"2025-06-09T07:19:14.000Z","dependencies_parsed_at":"2024-11-22T16:41:13.936Z","dependency_job_id":null,"html_url":"https://github.com/jes/meshmill","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/jes/meshmill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jes%2Fmeshmill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jes%2Fmeshmill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jes%2Fmeshmill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jes%2Fmeshmill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jes","download_url":"https://codeload.github.com/jes/meshmill/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jes%2Fmeshmill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275974471,"owners_count":25562666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-19T02:00:09.700Z","response_time":108,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T16:30:05.729Z","updated_at":"2025-09-19T17:06:58.310Z","avatar_url":"https://github.com/jes.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Meshmill](img/logo.png)\n\n![Screenshot](img/screenshot.png)\n\nMeshmill is open source 3D CAM software for Linux. It turns STL models into G-code for CNC machines.\n\n***This is beta-quality software. Use it at your own peril.***\n\nYou can [Download the latest AppImage](https://github.com/jes/meshmill/releases) to get started.\nCurrently it is only available for x86_64.\n\nMeshmill focuses on:\n\n * ease of installation\n * ease of use\n * true 3D toolpaths, not 2.5D\n\nAt the expense of:\n\n * power\n * performance\n * high-quality toolpaths\n\nI created Meshmill because I was frustrated with how difficult it was to get other open source\n3D CAM software to work.\n\n* If you spot bugs and you want to help out, please\ncreate a Github Issue, or send me an email if you're not on Github: james@incoherency.co.uk.\n\n* Be careful with the generated G-code. Before running it, check that it's not going to crash your machine, break your tool, or\ndo anything else stupid. In particular, check the generated G-code in another application to satisfy yourself that the\npaths are something close to what Meshmill rendered.\n\n* If you use it to create some parts, please share pictures of your CAD and your final result :)\n\n## How to use it\n\n1. Download a release from the [Releases](https://github.com/jes/meshmill/releases) page.\n\n2. `chmod +x meshmill-0.1.1.AppImage`\n\n3. `./meshmill-0.1.1.AppImage`\n\n4. Load your STL file in the \"MODEL\" tab.\n\n5. Click \"Process surface\". You'll see that the model turns from your smooth triangle mesh into the blocky pixelated heightmap.\nThis is expected. If you reduce the \"resolution\" value you'll get a higher-quality heightmap, at the expense of CPU time.\nYou need to judge for yourself what level of precision is required for your particular part with your particular machine\nand cutting tools.\n\n6. Create a job with the \"+ ADD JOB\" button.\n\n7. Set your cutting parameters and click \"Generate toolpath\". Once it is generated it will be displayed on\ntop of the model in purple.\n\n8. Once you're happy with how your toolpath looks, use the \"Save G-code\" button to save it somewhere.\n\n## Development\n\nThe GUI is made using Electron. The backend is Go.\n\nI recommend using [nvm](https://github.com/nvm-sh/nvm) to manage nodejs.\n\n    $ nvm install --lts\n    $ nvm use --lts\n\nWith nvm happy, clone the Meshmill repository and install its npm dependencies.\n\n    $ git clone https://github.com/jes/meshmill\n    $ npm install\n\nAnd run the application.\n\n    $ npm start\n\nThe backend for heightmap rendering and toolpath generation is [Pngcam](https://github.com/jes/pngcam).\nThere is a bundled version under `bin/`.\n\n`main.js` is the Electron main process. `index.html` is the HTML loaded in the renderer process.\n\n## Useful things to work on\n\nIf you want to improve Meshmill but don't know where to start, you could look at:\n\n * make Pngcam generate spiral toolpaths (or any others you find useful)\n * make Pngcam multi-threaded, or otherwise improve performance\n * an interesting example part to load up before the user opens their own model\n * some way to generate more than just top and bottom sides (maybe copy the part rotation UI that PrusaSlicer has?)\n * support for other tool shapes: tapered ball-nose end mills, bull-nose end mills, v-carving bits with arbitrary included angles\n * include roughing calculations in the ETA of the processing time, because it's sometimes significant\n * fix the thing where the camera moves to a new position when a new model is rendered (I think it re-positions so\n   that it always looks at the centre of the model, don't know why)\n * orthographic view\n * adaptive toolpaths (start with just adaptive clearing during roughing)\n * build Pngcam and Meshmill for other platforms of interest (Windows? Raspberry Pi?)\n * reduce feed rate during full-width slotting\n * separate step down for roughing passes vs finishing pass\n * better sorting of cut segments to reduce time wasted on travel moves\n * lift up by safe Z height during all travel moves\n * don't ramp entry on travel moves\n * should CutPath() consult writeStock to make sure it's not gouging? (but note writeStock is not really valid until\n   it's written out at the end)\n * larger epsilon for Simplified() to avoid blocking Grbl lookahead with tiny moves\n * animated simulation\n\n## Contact me\n\nMeshmill is created by James Stanley. You can email me at james@incoherency.co.uk or read my blog at\nhttps://incoherency.co.uk/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjes%2Fmeshmill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjes%2Fmeshmill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjes%2Fmeshmill/lists"}