Rayforge is a modern, cross-platform G-code sender and control software for GRBL-based laser cutters and engravers. Built with Gtk4 and Libadwaita, it provides a clean, native interface for Linux and Windows, offering a full suite of tools for both hobbyists and professionals.
| Feature | Description |
|---|---|
| Modern UI | Polished and modern UI built with Gtk4 and Libadwaita. Supports system, light, and dark themes. |
| Multi-Layer Operations | Assign different operations (e.g., engrave then cut) to layers in your design. |
| Versatile Operations | Supports Contour, External Outline, and Raster Engraving with detailed settings. |
| 2.5D Cutting | Perform multi-pass cuts with a configurable step-down between each pass for thick materials. |
| 3D G-code Preview | Visualize G-code toolpaths in 3D to verify the job before sending it to the machine. |
| Multi-Machine Profiles | Configure and instantly switch between multiple machine profiles. |
| GRBL Firmware Settings | Read and write firmware parameters ($$) directly from the UI. |
| Comprehensive 2D Canvas | Full suite of tools: alignment, transformation, measurement, zoom, pan, and more. |
| Advanced Path Generation | Intelligent path interpolation based on spot size, with travel time optimization and path smoothing. |
| Holding Tabs | Add tabs to contour cuts to hold pieces in place. Supports manual and automatic placement. |
| G-code Macros & Hooks | Run custom G-code snippets before/after jobs. Supports variable substitution. |
| Broad File Support | Import from SVG, DXF, PDF, PNG, BMP, and even Ruida files (.rd). |
| Camera Integration | Use a USB camera for workpiece alignment, positioning, and background tracing. |
| Cross-Platform | Native builds for Linux and Windows. |
| Extensible | Open development model makes it easy to add support for new devices. |
| Multi-Language | Available in English, Portuguese, Spanish, and German. |
| G-code Dialects | Supports GRBL, Smoothieware, and other GRBL-compatible firmwares. |
| 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. |
Download the latest installer from the 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 rayforgeThe Snap package includes all dependencies and runs in a sandbox. It is the recommended method for most other Linux distributions.
Important
The Snap is sandboxed and requires you to manually grant permissions for hardware access. Run these commands after installation.
For camera access:
sudo snap connect rayforge:cameraFor USB serial port access:
# First, enable experimental hotplug support
sudo snap set system experimental.hotplug=true
# Connect your laser via USB, then run this command
sudo snap connect rayforge:serial-portThis method is for developers and advanced users. You must install system dependencies manually.
On Debian/Ubuntu-based systems:
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(Package names may differ on other distributions.)
There are no official builds for other platforms, but Rayforge may run from source via
the pip method. Contributions for packaging on other platforms are welcome.
We welcome contributions of all kinds! Whether you're fixing a bug, adding a feature, or improving documentation, your help is appreciated.
- Report a Bug: Open an issue with a clear description and steps to reproduce.
- Suggest a Feature: Start a discussion or open a feature request issue.
- Submit a Pull Request: Please discuss major changes in an issue first.
- Add a Driver: See the driver development guide to add support for your hardware.
We are actively seeking help to create and maintain a Flatpak package. If you have experience with Flatpak, your contribution would be highly valuable!
This project uses Pixi to manage dependencies and development environments for a reproducible setup.
First, install Pixi by following the instructions on the official website.
Clone the repository and install dependencies.
# Install Gtk/Adwaita system dependency (Debian/Ubuntu)
sudo apt install gir1.2-adw-1
# Let Pixi handle the rest
pixi installThis command reads pixi.toml and installs all conda and pip dependencies into a local
.pixi virtual environment.
pixi run rayforgepixi run testFor an interactive workflow, you can activate a shell within the project's environment.
pixi shellInside this shell, you can run commands directly without the pixi run prefix
(e.g., rayforge, pytest). Type exit to leave the shell.
Always use Pixi to manage dependencies to ensure the pixi.lock file is updated.
# Add a conda package
pixi add numpy
# Add a PyPI package
pixi add --pypi requestsThe following tasks are available for managing language translations:
pixi run update-translationspixi run compile-translationsThis project is licensed under the MIT License. See the LICENSE file for details.