CNCjs
Web UI server for sending and monitoring G-code on CNC controllers (Grbl, Marlin, Smoothieware, TinyG/g2core) over serial connections.

CNCjs is a web-based user interface and server for controlling CNC machines by streaming G-code to common firmware such as Grbl, Marlin, Smoothieware, and TinyG/g2core. It runs on a computer like a Raspberry Pi or laptop and connects to the controller over a serial link (USB, Bluetooth serial, or serial-to-WiFi).
Key Features
- Supports multiple CNC firmware targets including Grbl/Grbl-Mega, Marlin, Smoothieware, TinyG, and g2core
- G-code sender with real-time status, console, and 6-axis digital readout (DRO)
- Toolpath visualization with 3D preview
- Multi-client access to the same machine session (multiple HTTP connections)
- Responsive interface suitable for tablets and small touch displays
- Extensible UI with customizable workspace, widgets, and “pendant” remote-control UIs
- Watch-directory workflow to automatically detect and load new files
- Macros, command buttons, events, and features like Z-probe and tool-change workflows
Use Cases
- Running a CNC router or mill from a Raspberry Pi connected via USB serial
- Setting up a shop-floor touchscreen “pendant” interface for jogging and job control
- Managing CNC job preparation with file drop/watch-directory and repeatable macros
CNCjs is a practical choice when you want a browser-based control panel for hobbyist and prosumer CNC controllers, with visualization, extensibility, and multi-device access built in.