Nestbolt sheet nesting

io.github.skulitom由 GitHub 帳號 skulitom 發布v0.1.0更新於 Oct 24, 2026

Local fixed-sheet nesting for laser and CNC cutting: SVG/DXF import, nest, validate, export.

已驗證STDIO僅桌面開發者工具媒體與設計

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理匯入 SVG/DXF 零件、在固定板材上排版(雷射或 CNC 切割)、驗證排版並匯出每張板材的檔案。

可以做什麼
  • 匯入 SVG、DXF 與 LightBurn 專案檔為零件,辨識孔洞、圖層與板材輪廓
  • 在固定板材上排版,可設定邊距、間距、旋轉、鏡像及多種板材尺寸
  • 估算一項工作需要幾張板材
  • 驗證排版的重疊、間距、包含關係、旋轉與數量
  • 依板材匯出 SVG 與 DXF,或匯出可編輯的 LightBurn 專案
適用情境
適合在雷射、CNC 銑床、電漿或水刀上切割固定板材,希望助理從現有圖面準備、排版並匯出切割檔,或在開切前確認排版有效的情況。
執行需求
以本機 stdio 程序執行;Windows MCP 套件可安裝到 Claude Desktop,或以絕對路徑註冊 nestbolt-mcp 執行檔。只在其工作目錄或 NESTBOLT_WORKSPACE 內讀寫。未宣告需要帳號或 API 金鑰。
安裝前請注意
會寫入工作目錄中的檔案,但不會覆寫既有檔案。共線切割仍在開發中,需 CAM 前置處理以免重複切割共用線段。引線路徑僅供複核參考,實際引線由切割程式產生。基準數據針對固定版本,預覽版未做新的比較。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Nestbolt sheet nesting,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Nestbolt

简体中文 · 日本語

In the frozen v1 benchmark, 8.5% less material at the median than the best of Deepnest, SVGnest and Sparrow at equal 60-second budgets, and 9.6% at 300 seconds, in the final benchmark run (fresh seeds, ten held-out jobs). Sparrow still wins 8 of the 56 jobs at 60 seconds (details, every number).

Free, open-source nesting for people who cut fixed sheets: laser cutters, CNC routers, plasma, waterjet, fabric and leather. Nestbolt arranges parts so they use the least material. It runs in your browser (nothing is uploaded), on the command line, and as an MCP server that AI agents can call.

Open the browser app · Download a release · Connect an AI agent

How Nestbolt compares with other ways an AI agent can nest parts (OpenNest, pyFit, Sparrow, Deepnest, SVGnest and more), by interface, file formats and sheet model: nesting for AI agents.

For laser makers: how many ornaments fit on a 12 × 12 inch sheet, measured for six designs, with ready-to-cut sheets; more in the examples.

Try the v0.2.0-alpha.1 preview for editable LightBurn project nesting, lead-in allowances and improvements for large curved drawings. Windows x64, Linux x64 and macOS Apple silicon tools are available, plus the Windows MCP bundle. Their published-download checks pass. Import acceptance and common-line material use remain under development; the v1.1 plan is 60% complete. Stable v0.1.0 remains available.

The hosted browser app runs a preview build from main (newer than v0.2.0-alpha.1). The benchmark figures below belong to the frozen 75cbb32 build; this preview makes no new comparison against competing tools.

[451 letter outlines nested on one sheet, small letters inside the holes of large ones]

451 parts on one 850 × 425 mm sheet in 120 seconds on one CPU core: DejaVu Sans Bold glyphs in four sizes with their exact Bézier outlines, 90° rotations and 1 mm spacing. 29 letters sit inside the holes of others, and the unused material stays as one clean offcut along the top. The layout passed the independent validator. Rebuild it with python scripts/make_showcase.py --nest 120.

How it compares

Final acceptance run (2026-10-13): 75 frozen sheet jobs (35 academic, 40 maker, ten of them held out from all tuning), equal time budgets, one CPU core per tool, five fresh seeds each, every layout checked by an independent validator. The comparison is against the best of Deepnest, SVGnest and Sparrow on each job, each with the better of its two settings.

BudgetValid Nestbolt layoutsLess material than the best competitor (median)Wins or ties
60 s375/3758.5%48 of 56
300 s (long subset)60/609.6%11 of 11

At 60 s Nestbolt uses less material than Deepnest on all 55 jobs where Deepnest produced a layout (median 9.9%) and than SVGnest on all 36 (14.4%). Sparrow, which Nestbolt builds on, wins 8 jobs. Seven are one-sheet jobs that Nestbolt hands to Sparrow itself after its own first layout, so Sparrow runs with slightly less time there; it is 0.03-2.4% better on them. The eighth (two sheets) is 0.34% better. That misses the project's own 60-second bar (wins or ties on 90% of jobs and never more than 1% worse); the 300-second, strip-parity and speed bars are met (status).

[A benchmark job as nested: frames with inserts in their windows, gears and brackets, compressed to one end of the sheet]

One benchmark job exactly as nested in a 60-second development run (m-mechanical-frame-inserts, seed 0, sheet turned to landscape): 138 parts, all 39 inserts placed inside frame windows, everything packed into 56% of a 2440 × 1220 mm sheet so the rest stays one offcut. The best competitor used 62% of the sheet on this job.

In 30 s Nestbolt matches the competitors' 300 s result on 10 of 11 jobs. The first final run (build 484ce8b) stopped with an error on one job; the fix is in 75cbb32 and both runs are published. Every run, including failures, is in BENCHMARKS.md; status lists the evidence per gate. The results page shows every per-job number, tool revision, seed and the hardware; python scripts/reproduce.py --phase final --final-acceptance rebuilds the datasets, reruns what is missing and regenerates it.

What works today

  • Import SVG and DXF: lines, arcs, ellipses, Béziers, B-splines, blocks, transforms and units, converted to millimetres. Each closed outline is a part; outlines inside it are its holes. Choose cutting layers, identify stock outlines, and review repairs and unsupported geometry. See import options and the shop-file verification.
  • LightBurn projects (.lbrn2 and legacy .lbrn): nest groups as rigid units and export an editable .lbrn2 per sheet, preserving original artwork, text, images and layer settings. Tool and output-disabled shapes stay fixed. Older text may need a separate native save to embed its outlines; mixed active/fixed groups need regrouping before nesting. Import messages explain cached text, bounding rectangles and missing curve controls. See LightBurn preparation.
  • Nest on fixed sheets: margins, part and edge spacing, several sheets, several stock sizes with limits, defects, remnant outlines, rotations (free, stepped or a list such as 0/180 for fabric grain) and mirroring. Small parts can sit inside the holes of larger parts. The last sheet is compressed towards one end so the offcut stays usable.
  • Export one SVG and one DXF per sheet from the original curves, transformed rather than re-polygonised. LightBurn projects use preserving .lbrn2 output. Export fidelity checks record the tested files and tolerances.
  • Lead-in allowances reserve room for leads and set contour starts, with shortened leads and unresolved contours reported explicitly. Red LEADIN paths are review guides; the cutting program creates the actual leads. Imported LightBurn projects keep their editable contents and receive separate SVG/DXF cutting files. See lead settings and CAM setup.
  • Common-line cutting, optional and still under development: identify shared straight cuts with kerf compensation. It can reduce cutting distance while increasing material use; two development jobs exceed the planned material limit. The export needs CAM preparation to avoid cutting shared sections twice. See common-line setup and limitations.
  • Check every result with an independent Clipper2 validator (overlap, spacing, containment, rotations, quantities). Invalid layouts are never returned.
  • Browser app (web/): the same engine compiled to WebAssembly in Web Workers, automatic worker selection, a live view of the best layout, projects saved in the browser or as a ZIP, and five one-click examples. Files never leave the computer. An optional Quick initial layout setting helps start large jobs. Current browser checks and native comparisons are tracked in Status.
  • MCP server with import_parts, nest, validate_layout, export_layout and estimate_sheets, tested with Claude Code. Its budgets are repeatable: same build, inputs, work budget and seed give the same layout unless the real-time limit is reached, which is reported explicitly. See the agent interface.

The engine builds on jagua-rs and sparrow by Jeroen Gardeyn and collaborators (arXiv 2509.13329). Fixed-sheet search lays the last sheets end to end as one walled strip and shrinks the last sheet with a port of Sparrow's separator; parts move between sheets and an emptied sheet disappears. Near-rectangular parts such as box panels also get a bounding- rectangle packing start. One sheet of hole-free parts without defects is exactly Sparrow's own strip-packing problem, where it is the state of the art, so there Nestbolt runs unmodified Sparrow for the rest of the budget.

Quick start

Use the browser app without installing anything, or download native tools for Windows x64, Linux x64 or macOS Apple silicon from the v0.2.0-alpha.1 preview or stable v0.1.0. Each archive contains nestbolt, nestbolt-mcp and licences; download checksums are provided alongside it. The separate Windows MCPB bundle installs the server in Claude Desktop; see agent setup.

To build the development version, install Rust through rustup (the repository selects Rust 1.98.1):

sh
cargo build --release -p nestbolt-cli -p nestbolt-mcp

Import parts, nest them for 30 seconds, and get per-sheet SVG/DXF files (examples/box-99x63x45.svg is the browser app's example box):

sh
target/release/nestbolt import examples/parts.svg --output library.jsontarget/release/nestbolt nest --library library.json --request examples/nest-request.json --out-dir run --seconds 30

For drawings with larger gaps, import --close-gaps 0.05 explicitly repairs up to 0.05 mm and reports every repair's position and size. It is off by default; the silent join limit remains 0.005 mm. The UI and MCP expose the same option. See import options and reports. Lead reservations and contour starts are available in the browser, request JSON and nest --lead-in --kerf ...; see settings and LightBurn setup.

A request names library parts with quantities and the sheets in millimetres:

json
{  "parts": [{"id": "parts-1", "quantity": 4}, {"id": "parts-2", "quantity": 12, "rotations": {"kind": "free"}}],  "sheets": [{"width_mm": 600, "height_mm": 400, "margins_mm": {"left": 5, "right": 5, "bottom": 5, "top": 5}}],  "spacing_mm": 1.0,  "edge_spacing_mm": 1.0}

run/ then holds layout.json, report.json and sheet-0.svg/sheet-0.dxf and so on. Existing files are never overwritten. nestbolt export re-exports a layout; nestbolt validate checks a polygon job and layout. Add --repeatable to nestbolt nest or nestbolt sheets for a deterministic work budget instead of wall-clock time: the same inputs, budget and seed then give the same layout. On a machine much slower than the reference PC, --time-limit <seconds> allows more real time for the same work (the default is --seconds). The optional --quick-start setting tries a conservative initial arrangement before improving it. It is off by default and may use more material. The browser calls it Quick initial layout under Advanced; request JSON and MCP use "quick_start": true. Original geometry, spacing, stock limits and rotation permissions still apply. Unsupported stock or angle rules use the ordinary constructor. File formats are described by the JSON Schemas.

Browser app

Open the hosted app and pick an example (finger-jointed boxes, letters inside letters, a 138-part mechanical kit, a FreeSewing T-shirt pattern on a fabric roll, interlocking gears), or drop your own SVG/DXF files. LightBurn import, lead allowances and the newer large-drawing features are available in the hosted preview build and in a local build. The best layout so far is drawn while the search runs, and each sheet shows the box around its parts and the clear offcut left above them. Guides: free nesting for laser cutting, Nestbolt vs Deepnest and SVGnest, nesting SVG and DXF in the browser and the five examples.

[The mechanical-kit example in the browser app: 138 parts on one plywood sheet in 30 seconds, inserts inside the frames, the clear offcut shaded above the dashed box around the parts]

To build it locally you need the wasm32-unknown-unknown target, wasm-bindgen-cli 0.2.129 and Node.js 24; then open the printed address:

sh
cd web && npm ci && cd ..python scripts/build_web.pynpm --prefix web run preview

python scripts/build_web.py --test also runs the Playwright tests in Chromium and Firefox.

Use from agents

Register the MCP server with an absolute path, for example in Claude Code:

sh
claude mcp add --transport stdio --scope local nestbolt -- /path/to/target/release/nestbolt-mcp

The server reads and writes only inside its working directory (or NESTBOLT_WORKSPACE). docs/AGENT_INTERFACE.md covers Claude Code, Codex and Claude Desktop, the request format and the rules.

Development

sh
python scripts/check.pypython scripts/sheets_batch.py --cpu 0 --cpu 2 --seconds 60

The first runs format, lint, all Rust and Python tests, WebAssembly builds, notice and dataset checks; add --web for the browser build and tests. The second runs the development benchmark (held-out jobs excluded) and writes an audited report under benchmarks/results/.

PathPurpose
crates/coreGeometry import/export, sheet search, separator, part-in-part
crates/cliCommand-line interface
crates/mcpNative stdio MCP server
crates/validatorIndependent Clipper2 checker and material scoring
crates/wasmWebAssembly boundary for the browser app
webBrowser app (Preact, Vite) and its Playwright tests
benchmarksFrozen datasets, competitor runners and all results
docs/PLAN.mdOriginal v1 plan and acceptance gates
docs/PLAN_V1_1.mdCurrent shop-file and cutting-feature plan
docs/STATUS.mdMilestone evidence and next steps

Every benchmark run, including failures, is logged in BENCHMARKS.md.

Sibling tools

Nestbolt belongs to a family of free, MIT-licensed tools for agents by the same author. These run locally as MCP servers:

  • Anode: a hidden background Windows desktop where agents automate and test GUI apps, take screenshots and run headed browser tests without taking over the user's screen.
  • Pixelbolt: pixel art and sprite animation from editable JSON recipes, exported as sprite sheets, atlases, animated PNGs and GIFs.
  • Cutbolt: a video editing engine with exact timelines, captions and rendering.
  • Inkbolt: vector and raster image editing for diagrams and illustrations, with SVG import and SVG and PDF export.

Progress and licence

Progress counts finished milestones only; see docs/STATUS.md. Nestbolt is MIT. jagua-rs is an unmodified MPL-2.0 dependency; the separator in crates/core/src/separate.rs is adapted from Sparrow (MIT). THIRD_PARTY_NOTICES records every dependency and licence.

來源:README.md,提交 34e408d

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Oct 14, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分