Rayforge is a powerful, open-source, and cross-platform software for controlling your laser cutter and engraver. Designed with a modern and intuitive interface, it provides all the tools you need to bring your creations to life on Linux and Windows.
Rayforge combines a user-friendly experience with advanced features, making it suitable for both hobbyists and professionals. Whether you're engraving complex raster images or cutting precise vector shapes, Rayforge offers a streamlined workflow from design to final product.
| Feature | Description |
|---|---|
| Intuitive User Interface | Polished and modern UI built with Gtk4 and Libadwaita. |
| Multi-Layer & Multi-Step | Assign different operations (e.g., engrave then cut) to layers in your design. |
| Versatile Operations | Supports Contour, External Outline, and Raster Engraving. |
| 2.5D Cutting | Perform multi-pass cuts with a step-down between each pass for thicker materials. |
| 3D G-code Preview | Visualize your G-code paths in a 3D view to verify the final job before you cut. |
| Multi-Machine Support | Configure and instantly switch between multiple machine profiles. |
| Firmware Settings | Read and write firmware parameters directly on GRBL-based devices. |
| Powerful Canvas | Full suite of tools: alignment, transformation, measurement, zoom, pan, and more. |
| Optimized Path Generation | Intelligent path interpolation based on spot size, with travel time optimization and path smoothing. |
| Broad File Support | Import from popular formats including SVG, DXF, PDF, PNG, and even Ruida files. |
| Camera Support | Use a camera for live positioning, de-distortion, and aligning workpieces on the bed. |
| Cross-Platform | Native support for both Linux and Windows. |
| Extensible | Open development model makes it easy to add support for your own laser. |
| Multi-Language | Available in English, Portuguese, Spanish, and German. |
| G-code Dialects | Support for GRBL, Smoothieware, and other GRBL-compatible firmwares. |
| Customization | Switch between system, light, and dark themes. |
| And much more... | Job framing, air assist control, console access, control buttons, etc. |
| Device Type | Connection Method | Notes |
|---|---|---|
| GRBL | Serial Port | Supported since version 0.13. The most common connection type. |
| GRBL | Network (WiFi/Ethernet) | Connect to any GRBL device on your network. |
| Smoothieware | Telnet | Supported since version 0.15. |
The easiest way to get started on Windows is to download the latest installer from our releases page.
We offer several installation methods for Linux.
For users on Ubuntu and its derivatives (like Linux Mint, Pop!_OS), the recommended method is our official PPA. This integrates directly with your system's package manager and provides automatic updates.
Note
The PPA supports Ubuntu 24.04 LTS and newer.
Open a terminal and run the following commands:
sudo add-apt-repository ppa:knipknap/rayforge
sudo apt update
sudo apt install rayforgeFor other Linux distributions, or if you prefer a sandboxed application, the recommended method is installing via the Snap Store. It includes all necessary dependencies in a single package.
Important
To grant the application access to your camera and serial port, run the following commands once after installation!
sudo snap connect rayforge:cameraIf you want to be able to use USB Serial connections, you need to to the following:
- Update to the latest Rayforge edge release.
- Plug your laser into a USB port.
- Open a terminal
- Execute
sudo snap set system experimental.hotplug=true - Execute
sudo snap connect rayforge:serial-port. This will fail if your laser is not connected via USB! - Start Rayforge
For advanced users who prefer not to use Snap or a PPA, Rayforge can be installed via PIP. You will need to manually install system dependencies first. On Debian/Ubuntu-based systems, this can be done with:
sudo apt update
sudo apt install python3-pip python3-gi gir1.2-gtk-3.0 gir1.2-adw-1 gir1.2-gdkpixbuf-2.0 libgirepository-1.0-dev libgirepository-2.0-0 libvips42t64 libpotrace-dev libagg-dev libadwaita-1-0 libopencv-dev
pip3 install rayforge(Note: Package names may differ slightly on other distributions.)
While there are no official installers for other operating systems at this time, Rayforge is built with cross-platform code. It may be possible to install it from source using the PIP instructions above. Contributions for packaging on other platforms are welcome!
Contributions are what make the open-source community such an amazing place. We welcome any contributions, from bug reports to new features!
- Report a Bug: Find a problem? Let us know by opening an issue.
- Suggest a Feature: Have a great idea? We'd love to hear it.
- Write Code: Check out our open issues. If you want to add a major feature, please discuss it with us first.
- Add a Driver: To add support for your machine, please see the driver development guide.
- Help with Packaging: We are actively looking for help with packaging, especially for Flatpak. If you have experience with this, your help would be invaluable!
This project uses Pixi to manage dependencies and development environments. It provides a single, cross-platform tool for a reproducible setup.
Ensure you have Pixi installed on your system. You can find the installation instructions on the official website.
After cloning the repository, setting up the development environment should work with this command:
sudo apt install gir1.2-adw-1
pixi installThis will read the pixi.toml file, create a local .pixi environment,
and install all specified conda and pypi dependencies in it.
To run the main application, use the run task defined in pixi.toml:
pixi run rayforgeTo run the test suite, use the test task:
pixi run testFor a more interactive workflow (similar to activating a virtual environment), you can start a shell within the project's environment:
pixi shellNow, your shell is configured with all the project's dependencies. You can run commands directly without the pixi run prefix:
# Inside the pixi shell
rayforge
pytest -vExit the shell by typing exit.
The pixi.toml file is the single source of truth for all dependencies. Do not use pip or conda directly to add packages.
To add a new Conda package:
# Example: Add numpy from conda-forge
pixi add numpyTo add a new PyPI package:
# Example: Add requests from PyPI
pixi add --pypi requestsPixi will automatically resolve the dependencies and update the pixi.toml and pixi.lock files.
The following tasks are available for managing language translations:
-
To extract new strings from the code and update
.pofiles:pixi run update-translations
-
To compile
.pofiles into.mofiles for the application to use:pixi run compile-translations
This project is licensed under the MIT License. See the LICENSE file for details.