Skip to main content

Modern filament winding planner, simulator, and G-code toolkit.

Project description

FiberPath

Version License: AGPL-3.0

Backend CI GUI CI Docs CI GUI Packaging Docs Deployment

Python TypeScript Rust FastAPI React Vite Tauri MkDocs

FiberPath is a next-generation system for planning, simulating, and executing filament-winding jobs on cylindrical mandrels to produce high-quality, repeatable composite parts. The repository contains four coordinated components:

  • Core Engine (fiberpath/) – deterministic planning pipelines, geometry utilities, and G-code emission.
  • CLI (fiberpath_cli/) – Typer-based command-line interface offering plan, plot, simulate, and stream.
  • API (fiberpath_api/) – FastAPI service exposing planning and simulation routes.
  • Desktop GUI (fiberpath_gui/) – Tauri + React application that wraps the CLI for a unified user experience.

Download

📦 Latest Release: v0.3.0

  • Desktop GUI – Windows (.msi/.exe), macOS (.dmg), Linux (.deb/.AppImage)
  • Python CLI/APIpip install fiberpath or uv pip install fiberpath

📚 Documentation: cameronbrooks11.github.io/fiberpath

Local Development

uv pip install .[dev,cli,api]
python -m fiberpath_cli.main --help
pytest

See uv docs for installation instructions or replace uv with pip if you prefer the standard installer.

Plotting Quick Preview

fiberpath plan examples/simple_cylinder/input.wind -o simple.gcode
fiberpath plot simple.gcode --output simple.png --scale 0.8

The plot command unwraps mandrel coordinates into a PNG so you can visually inspect a toolpath before streaming it to hardware. Plotting extracts mandrel/tow settings from the ; Parameters ... header emitted by plan. See docs/assets/simple-cylinder.png for a sample.

Axis Format Selection

FiberPath supports configurable axis mapping to work with different machine configurations:

  • XAB (Standard Rotational) - Default format using true rotational axes:

    • X = Carriage (linear, mm)
    • A = Mandrel rotation (rotational, degrees)
    • B = Delivery head rotation (rotational, degrees)
  • XYZ (Legacy) - Compatibility format for systems where rotational axes are configured as linear:

    • X = Carriage (linear, mm)
    • Y = Mandrel rotation (treated as linear, degrees)
    • Z = Delivery head rotation (treated as linear, degrees)

Use --axis-format xab (default) for new projects. The legacy format is retained for backward compatibility with existing systems like Cyclone.

# Generate G-code with standard XAB axes (default)
fiberpath plan input.wind -o output.gcode

# Generate G-code with legacy XYZ axes
fiberpath plan input.wind -o output.gcode --axis-format xyz

Desktop GUI Companion

A cross-platform Tauri + React front end is provided to plan, plot, simulate, and (dry-run) stream from a single interface.

Prerequisites: Node.js 18+, Rust toolchain, and fiberpath available on PATH (uv pip install -e .[cli] or equivalent).

cd fiberpath_gui
npm install
npm run tauri dev

The GUI panels call the same Typer commands used in the CLI. Plot previews are rendered to temporary PNGs, and the stream panel defaults to --dry-run until a serial port is supplied.

Hardware Smoke Test Checklist

When validating real hardware:

  1. Use fiberpath plan to generate G-code, then dry-run fiberpath stream ... --dry-run to confirm the queue.
  2. Run fiberpath simulate (CLI or GUI) to verify motion/time estimates.
  3. Connect the mandrel controller, then either:
    • fiberpath stream simple.gcode --port <PORT> --baud-rate 250000, or
    • open the GUI, disable “Dry-run mode,” and enter the port before streaming.
  4. Keep a console tailing fiberpath_cli logs for full verbosity during troubleshooting.
  5. After a live run, archive the emitted JSON summaries (CLI --json or GUI Result cards) to correlate telemetry with planner parameters.

Streaming to Marlin

fiberpath stream simple.gcode --port COM5 --baud-rate 250000

FiberPath automatically waits for Marlin's startup sequence to complete before streaming commands. This handles the ~10-20 line configuration banner that Marlin outputs on connection (typically ending with settings like M92, M203, M206, etc.).

Use --dry-run to preview streaming without opening a serial port. --verbose prints each dequeued G-code command and Marlin's startup messages. The run operation streams one command at a time, waits for ok, and lets you pause with Ctrl+C (FiberPath issues M0 and resumes via M108).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fiberpath-0.3.0.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fiberpath-0.3.0-py3-none-any.whl (62.7 kB view details)

Uploaded Python 3

File details

Details for the file fiberpath-0.3.0.tar.gz.

File metadata

  • Download URL: fiberpath-0.3.0.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fiberpath-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3de2488c0e0cf8f5a402e739e5a79baa71fbe91b1b1aa248a73e3f0acf0e2b81
MD5 55606e1b367f8e5fe2739f1289e6c032
BLAKE2b-256 684abd1a4efc1f2619699bb19db90fc8e28d324e231baf55259ce130aeb734de

See more details on using hashes here.

Provenance

The following attestation bundles were made for fiberpath-0.3.0.tar.gz:

Publisher: release.yml on CameronBrooks11/fiberpath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fiberpath-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: fiberpath-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 62.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for fiberpath-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b6f5d8229f94d084f2b6e838cbe2fd0e74f313aecdc7ceb73c388f5b8c152ae7
MD5 d2b7b4f83a28b165ba3489c0cfd13371
BLAKE2b-256 0646753acb7e19f3f54991757b8bfb1546ccae17b2a6078d42f0534fef86a818

See more details on using hashes here.

Provenance

The following attestation bundles were made for fiberpath-0.3.0-py3-none-any.whl:

Publisher: release.yml on CameronBrooks11/fiberpath

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page