# CNCjs

CNCjs is a browser-based interface for controlling CNC machines that run GRBL, Marlin, Smoothieware, or TinyG firmware. It is open source and self-hosted, installable on Docker Hub and Unraid.

Canonical page: https://ourlocalhost.com/app/244/cncjs

## Description

CNCjs is a browser-based interface for controlling CNC machines that run GRBL, Marlin, Smoothieware, or TinyG firmware. It sends G-code files, displays machine state, and exposes controller configuration through a web dashboard. It is useful for self-hosted CNC setups that need a lightweight, network-accessible control panel.

## Platform availability

Available on 3 of 9 platforms: Unraid, Mac, Linux.

## Desktop and other devices

Mac, Linux.

## Health score

62/100 (Good), based on 4 of 5 factors.
- Maintained: 91 (last commit 31 days ago)
- Popular: 68 (2,646 GitHub stars)
- Easy to install: 40 (3 install platforms, Docker image)
- Security check: 20 (1 serious finding, CI, tests, OpenSSF Scorecard 4.6/10)

## Security check

1 serious finding: Electron windows run with Node access and no context isolation (a malicious page can run code on your computer).
Automated checks on commit 747ffcd, 22 Oct 2026. Not an audit.

## Links

- Docker Hub: https://hub.docker.com/r/cncjs/cncjs/
- Unraid: https://ca.unraid.net/apps/cncjs-0k0hnz61uas01q?q=cncjs
- Official website: https://cnc.js.org
- desktop: https://github.com/cncjs/cncjs/releases/latest
- GitHub: https://github.com/cncjs/cncjs
- Documentation: https://cnc.js.org/docs/

## Common questions

### Can more than one client connect to the same CNCjs serial port?

Yes, CNCjs allows multiple HTTP connections at the same serial port.

### Will the CNCjs web UI display correctly on a phone?

It has a responsive view for small screens with a device width below 720px, and Safari on an iPhone 5S is shown as an example.

### How do I enable secure sign-in for CNCjs?

Since version 1.8, multi-account management can enable secure web access and WebSocket connections. If at least one account is enabled in Settings > Account, the web interface redirects to the Sign In page.

### Does the Linux Docker image run in Electron?

On Linux hosts, the Docker image uses the system Node.js to run CNCjs instead of Electron.

## Alternatives

- Candle: GRBL controller application with G-Code visualizer written in Qt.
- OpenBuilds CONTROL: OpenBuilds CONTROL is an application for connecting to, and controlling, your CNC, Laser, Plasma or Dragknife machine.
- bCNC: GrblHAL (formerly GRBL) CNC command sender, autoleveler, g-code editor, digitizer, CAM and swiss army knife for all your CNC needs.

---
Source: Our Local Host (https://ourlocalhost.com/app/244/cncjs), the self-hosted and open-source app directory.
