Skip to content
Go to file


Failed to load latest commit information.
Latest commit message
Commit time

Universal G-Code Sender

Last commit Build Status Codacy Badge Codebeat badge Releases

Universal G-Code Sender is a Java based, cross platform G-Code sender, compatible with GRBL, TinyG, g2core and Smoothieware.

Online documentation and releases:
Discussion forum:!forum/universal-gcode-sender

Technical details:


Below you will find the latest release of UGS.
For older releases please visit the releases page.

UGS Platform
The next generation, feature packed variant based on the Netbeans Platform.
Unpack and start the program bin/ugsplatform

Latest release (v2.0.6) Nightly build
Windows Windows Windows Windows
Linux x64 Linux Linux x64 Linux
Linux ARM RaspberryPI Linux ARM RaspberryPI
Zip All platforms Zip All platforms

UGS Classic
A clean and lightweight variant of UGS (requires Java).
Unpack and start the program by double clicking the jar file. On some platforms you may need to run the included start script.

Latest release (v2.0.6) Nightly build
Zip All platforms Zip All platforms


UGS Platform

UGS Platform main window

UGS Platform

Customizable panel layout

Customizable panel layout

Menu actions with customizable keybindings


Menu with plugins


One of many plugins

Dowel Maker

Basic gcode editor

Basic gcode editor

UGS Classic

UGS Classic main window

Classic main window

UGS Classic with visualizer

Classic visualizer


For development the Maven build tool is used.

Start the application

UGS Classic:

mvn install
mvn exec:java -Dexec.mainClass="com.willwinder.universalgcodesender.MainWindow" -pl ugs-core

UGS Platform:

mvn install
mvn nbm:run-platform -pl ugs-platform/application

Execute all tests

mvn test

Building the self-executing JAR

mvn install
mvn package -pl ugs-core

Build a release file

mvn package assembly:assembly

Develop via IntelliJ

If you are more used to IntelliJ, you can also build, run and debug it there.

Before you start you need to change a setting for handling imports in Maven since we are using jgitver, read more about it here.

  • Run mvn nbm:run-platform -pl ugs-platform/application once via terminal to build everything
  • Import the Source, File -> New -> Project from existing Sources
  • Setup a new "Run Configuration", Java Application, with following settings:
    • Main Class: org.netbeans.Main
    • VM Options: -Dnetbeans.user=$ProjectFileDir$/ugs-platform/application/target/userdir -Dnetbeans.home=$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform -Dnetbeans.logger.console=true -Dnetbeans.indexing.noFileRefresh=true -Dnetbeans.dirs="$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ugsplatform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ide:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/extra:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/java"
    • Program arguments: --branding ugsplatform
    • Working dir: $ProjectFileDir$
    • Use classpath of module: ugs-platform-app
  • There is a runConfiguration in the repository, which should be available after importing the project
You can’t perform that action at this time.