Modern filament winding planner, simulator, and G-code toolkit.
Project description
FiberPath
Plan, simulate, and manufacture composite parts with precision fiber winding.
Overview
FiberPath automates the complex process of filament winding—wrapping fiber-reinforced composites around mandrels to create lightweight, high-strength cylindrical parts like pressure vessels, pipes, and aerospace structures.
Design multi-layer winding patterns in a visual interface, simulate the full manufacturing process, and stream G-code directly to Marlin-based hardware. FiberPath handles the mathematics of geodesic paths, fiber tension calculations, and machine kinematics so you can focus on part design.
Features
- Visual Layer Editor – Design winding patterns with live preview
- Geodesic Path Planning – Automatic computation of stable fiber trajectories
- Hardware Simulation – Validate motion before manufacturing
- Direct Machine Control – Stream G-code to Marlin controllers with pause/resume
- XAB-Native Axis Output – Standardized rotational-axis output with clear logical axis mapping
- Cross-Platform Desktop GUI – Native Windows, macOS, and Linux applications
- Command-Line Tools – Scriptable workflows for automation and CI/CD
- Comprehensive Documentation – Architecture guides, examples, and API reference
Quick Start
Option 1: Desktop GUI (Recommended)
Download the installer for your platform from the latest release:
- Windows:
.msior.exeinstaller - macOS:
.dmgdisk image - Linux:
.debpackage or.AppImage
Launch the application, load an example from the File menu, and explore the visual editor.
Option 2: Command-Line Interface
Install via pip or uv:
pip install fiberpath
# or
uv pip install fiberpath
Generate G-code from an example:
fiberpath plan examples/simple_cylinder/input.wind -o simple.gcode
fiberpath plot simple.gcode --output simple.png
The plot command creates a 2D unwrapped visualization of the toolpath for quick inspection.
Installation
Desktop Application (Recommended)
📦 Download: github.com/CameronBrooks11/fiberpath/releases/latest
No Python installation required—the GUI is a fully self-contained native application with the FiberPath backend bundled inside. Just download, install, and run.
- Windows:
.msior.exeinstaller - macOS:
.dmgdisk image - Linux:
.debpackage or.AppImage
All desktop installers include the complete FiberPath toolchain for planning, simulation, and streaming.
Python Package
Requirements: Python 3.11+
# Install from PyPI
pip install fiberpath
# Install with optional dependencies
pip install fiberpath[cli] # CLI tools
pip install fiberpath[api] # FastAPI server
pip install fiberpath[dev] # Development tools
Development Install:
git clone https://github.com/CameronBrooks11/fiberpath.git
cd fiberpath
uv pip install -e .[dev,cli,api]
pytest
💡 Using uv is recommended for faster installs, but standard
pipworks fine.
Usage Examples
Planning a Winding Pattern
# Generate G-code from a .wind configuration
fiberpath plan examples/simple_cylinder/input.wind -o output.gcode
Visualizing Toolpaths (2D)
# Create 2D unwrapped plot
fiberpath plot output.gcode --output preview.png --scale 0.8
Simulating Jobs
# Simulation summary (time/material estimates; no interactive 3D viewer)
fiberpath simulate output.gcode
Streaming to Hardware
# Test streaming without hardware connection
fiberpath stream output.gcode --dry-run
# Connect and stream to Marlin controller
fiberpath stream output.gcode --port COM5 --baud-rate 250000
FiberPath automatically waits for Marlin's startup sequence (M92, M203, etc.) before streaming. Use Ctrl+C to pause—FiberPath issues M0 and resumes with M108.
Using the Desktop GUI
The GUI provides two main workflows:
Main Tab:
- Visual layer editor with add/remove/reorder
- Real-time unwrapped toolpath preview
- Parameter forms for mandrel, tow, and machine settings
- Export to G-code or save as
.windproject file
Stream Tab:
- Serial port selection and connection management
- Manual G-code command input for testing
- File streaming with pause/resume/cancel controls
- Real-time position tracking and status updates
Development Workflow
# Run GUI in development mode
cd fiberpath_gui
npm install
npm run tauri dev
# Run tests
pytest # Python tests
cd fiberpath_gui && npm test # TypeScript tests
# Run API server
fiberpath-api --port 8000 # Requires fiberpath[api] install
Architecture
FiberPath consists of four coordinated components:
┌─────────────────────────────────────────────────┐
│ Desktop GUI (Tauri + React) │
│ • Visual layer editor │
│ • 2D preview canvas │
│ • Serial communication controls │
└───────────────┬─────────────────────────────────┘
│ IPC calls
▼
┌─────────────────────────────────────────────────┐
│ CLI (Typer + Python) │
│ • plan • plot • simulate • stream │
└───────────────┬─────────────────────────────────┘
│ imports
▼
┌─────────────────────────────────────────────────┐
│ Core Engine (Python) │
│ • Geodesic path planning │
│ • Layer strategies │
│ • G-code generation │
│ • Geometry utilities │
└─────────────────────────────────────────────────┘
▲
│ imports
┌───────────────┴─────────────────────────────────┐
│ API Server (FastAPI) │
│ • RESTful planning endpoints │
│ • JSON input/output │
│ • Optional deployment for web integration │
└─────────────────────────────────────────────────┘
Design Principles:
- CLI and API are parallel interfaces to the same Core Engine
- GUI calls CLI via IPC for offline operation (no server required)
- Core is deterministic and thoroughly tested
- Modular architecture allows using components independently
See Architecture Documentation for detailed design rationale.
Axis Configuration
FiberPath uses XAB rotational-axis output in built-in workflows:
X= Carriage position (linear, mm)A= Mandrel rotation (rotational, degrees)B= Delivery head rotation (rotational, degrees)
Legacy XYZ programs should be re-generated under current versions. Simulation and plotting reject auto-detected XYZ files with an explicit error so stale programs are surfaced early.
Documentation
Comprehensive documentation is available at cameronbrooks11.github.io/fiberpath:
- Getting Started Guide – Installation and first steps
- Architecture Overview – System design and components
- Usage Guides – Visualization, streaming, WIND format
- API Reference – Core functions and CLI commands
- GUI Documentation – Desktop application architecture
- Development Guide – Contributing, tooling, release process
Contributing
Contributions are welcome! FiberPath is actively developed and maintained.
Before contributing:
- Read the Contributing Guide
- Check existing issues and pull requests
- Open an issue to discuss major changes before implementing
Development setup:
git clone https://github.com/CameronBrooks11/fiberpath.git
cd fiberpath
uv pip install -e .[dev,cli,api]
pytest
cd fiberpath_gui
npm install
npm test
Code standards:
- Python code follows PEP 8 (enforced by CI)
- TypeScript/React follows project ESLint configuration
- All new features require tests and documentation
- Commit messages use conventional commits format
See Development Documentation for tooling, CI/CD, and release process details.
License
FiberPath is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
This means:
- ✅ Free to use, modify, and distribute
- ✅ Source code must be made available to users
- ⚠️ Network use (e.g., hosting as a service) triggers copyleft
See LICENSE for full terms.
Questions? Open an issue or check the documentation.
Found a bug? Report it on GitHub Issues with steps to reproduce.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fiberpath-0.7.1.tar.gz.
File metadata
- Download URL: fiberpath-0.7.1.tar.gz
- Upload date:
- Size: 8.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
261d8de21094ca36824fa16191a49ffc98f079292c27aaf074845ce50ec4479c
|
|
| MD5 |
e87fdea4697eb60f1fea68f7e8ffa538
|
|
| BLAKE2b-256 |
83d7a6686a4a817088d0200771451b6088730bf5b1a23fbf1151ace8427b9f75
|
Provenance
The following attestation bundles were made for fiberpath-0.7.1.tar.gz:
Publisher:
release.yml on CameronBrooks11/fiberpath
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fiberpath-0.7.1.tar.gz -
Subject digest:
261d8de21094ca36824fa16191a49ffc98f079292c27aaf074845ce50ec4479c - Sigstore transparency entry: 1320407913
- Sigstore integration time:
-
Permalink:
CameronBrooks11/fiberpath@7efabd524fbf2a44285dd1ac568e74f08e6179a6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/CameronBrooks11
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7efabd524fbf2a44285dd1ac568e74f08e6179a6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file fiberpath-0.7.1-py3-none-any.whl.
File metadata
- Download URL: fiberpath-0.7.1-py3-none-any.whl
- Upload date:
- Size: 72.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
852a3d69cda27f6b6e6bb84f7a076b238e4502dcd0d6b1687be8cce12c9a8083
|
|
| MD5 |
c0fa13fdab670c207fc7ddab60fe6394
|
|
| BLAKE2b-256 |
46eb7c19ca2336c58a9f9380831e4ff47cd8f0f79d634bb02a86b49332c3263f
|
Provenance
The following attestation bundles were made for fiberpath-0.7.1-py3-none-any.whl:
Publisher:
release.yml on CameronBrooks11/fiberpath
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fiberpath-0.7.1-py3-none-any.whl -
Subject digest:
852a3d69cda27f6b6e6bb84f7a076b238e4502dcd0d6b1687be8cce12c9a8083 - Sigstore transparency entry: 1320407987
- Sigstore integration time:
-
Permalink:
CameronBrooks11/fiberpath@7efabd524fbf2a44285dd1ac568e74f08e6179a6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/CameronBrooks11
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@7efabd524fbf2a44285dd1ac568e74f08e6179a6 -
Trigger Event:
workflow_dispatch
-
Statement type: