🧪 Public Beta. SchnittPilot is in active development. Please report bugs and feature ideas via GitHub Issues.
Professional Windows desktop application for 1D cut optimization of bar stock (metal profiles, tubes, lumber, …) — built for metalworking, steel construction, and workshop fabrication.
Professionelle Desktop-Anwendung zur Zuschnittoptimierung von Stangenprofilen für Metallbau, Stahlbau und Werkstattfertigung.
Grab the latest beta from the
Releases page — look for
SchnittPilot-<version>-windows-x64.zip, unpack it anywhere, and double-click
SchnittPilot.exe. No installer required.
- 🪚 1D bin-packing optimization — FFD heuristic + OR-Tools CP-SAT exact solver
- ✂️ Kerf-aware — accounts for saw blade width in every cut
- 📦 Remnant stock management — leftover pieces are reused first in future plans
- 🖼️ Visual cut plans — on-screen view + workshop-ready PDF print
- ⚙️ Multiple modes — minimum waste / fewest bars / best remnant reuse / fast heuristic
- 💾 Project storage — SQLite database, full history of past jobs
- 📤 Export — PDF (shop floor print with QR code), Excel, CSV
- 🌐 Bilingual UI — German and English, switchable at runtime
- 🪪 Company logo — pick a PNG/JPG, it appears in the PDF header
- 💾 Automatic backups — periodic SQLite snapshots, configurable retention
- 🎓 First-run tutorial — 6-step interactive walkthrough
- Download
SchnittPilot-<version>-windows-x64.zipfrom Releases. - Unzip anywhere (e.g.
C:\Programs\SchnittPilot). - Run
SchnittPilot.exe. - Follow the welcome tutorial — it walks you through profile setup, the parts list, optimization, and export.
git clone https://github.com/Fy102-Coder/SchnittPilot.git
cd SchnittPilot
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements-dev.txt
python main.pyRun tests:
pytestBuild the EXE locally:
pyinstaller build_exe.spec
# Output: dist/SchnittPilot.exeSchnittPilot/
├── main.py # Entry point
├── build_exe.spec # PyInstaller configuration
├── config/ # Bundled YAML defaults
├── resources/ # Icons, QSS stylesheets
├── src/schnittpilot/
│ ├── app.py # Application bootstrap
│ ├── config/ # Pydantic settings loader
│ ├── core/
│ │ ├── models/ # Domain models (Profile, Part, Stock, …)
│ │ ├── optimization/ # FFD + CP-SAT solver strategies
│ │ └── services/ # Application logic
│ ├── persistence/ # SQLite + Repository pattern + backup
│ ├── export/ # PDF / Excel / CSV exporters
│ ├── gui/ # PySide6 MVVM (widgets, dialogs, viewmodels)
│ ├── i18n/ # German / English string catalogues
│ └── utils/ # Logging, helpers
└── tests/ # pytest suite
User settings live in %APPDATA%\SchnittPilot\config.yaml (Windows) and override
the bundled defaults in config/default_config.yaml.
Beta feedback is the whole point right now. The fastest ways to help:
- 🐛 Open a bug report
- 💡 Suggest a feature
- ⭐ Star the repo if you find it useful — that helps me prioritize.
Pull requests with bug fixes are welcome. For larger changes, please open an issue first so we can discuss the design.
SchnittPilot is released under a custom Source-Available Beta License — see LICENSE for details.
In short:
- ✅ The source is public for transparency, security review, and beta testing.
- ✅ Free for personal, hobbyist, and non-commercial workshop use during the beta.
- ❌ No commercial use, no redistribution, no derivative works without permission.
For commercial licensing, please open a GitHub issue.
See CHANGELOG.md for the full version history.

