# cncjs/cncjs

A web-based interface for CNC milling controller running Grbl, Marlin, Smoothieware, or TinyG.

Repository: https://github.com/cncjs/cncjs
Canonical: https://ross.abutalabs.com/products/cncjs
Homepage: https://cnc.js.org
Language: JavaScript
License: MIT
License Family: permissive
Topics: cnc, gcode, tinyg, raspberry-pi, cnc-milling-controller, smoothieware, smoothie, cncjs, g2core, grbl, serial, pendant, linux, marlin
Last push: 2026-08-20T16:59:02+00:00

## Health v2 (maintenance only)
Score: 98/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 98, release rhythm 98, longevity 100
- inputs: {"age_days": 4030, "days_push": 13, "days_rel": 13, "gap_med": 24, "n_releases_24m": 10}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2639, forks 621 (observed 2026-08-28T04:07:06.381009+00:00)

## What it is
CNCjs is a full-featured web-based interface for CNC milling controllers running Grbl, Grbl-Mega, Marlin, Smoothieware, TinyG, or g2core. It runs on Node.js (commonly on a Raspberry Pi), connects to the controller over serial/USB/Bluetooth/WiFi, and provides a browser UI with a 3D tool-path visualizer, DRO, jog controls, probing, macros, and webcam monitoring.

## Use cases
- control a CNC mill from a web browser
- run Grbl or Marlin from a Raspberry Pi
- visualize G-code tool paths in 3D before cutting
- set Z zero with a touch plate probe
- jog axes and home a CNC machine remotely
- run G-code macros to automate routine tasks
- monitor a CNC machine with a webcam
- connect multiple clients to one serial port

## When to choose
- you have a Grbl, Marlin, Smoothieware, TinyG, or g2core controller and want a browser-based control panel
- you want to run the controller interface on a Raspberry Pi or any Node.js machine
- you need multi-client access to a single serial port
- you want pendant, macro, probing, and webcam support in one tool

## When to avoid
- you need 3D printer-specific features like bed leveling or filament management
- you want a native desktop-only workflow without a browser
- your controller firmware is unsupported
- you need CAM/slicing - CNCjs controls machines but does not generate G-code

## Facets
- artifact type: application
- maturity: stable
- function: web-framework, http-server, websocket, gui, developer-tools
- domain: hardware, self-hosted, cross-platform
- platform: windows, iot, self-hosted
- tags: cnc, gcode, grbl, marlin, smoothieware, tinyg, g2core, serial-port, raspberry-pi, pendant, 3d-visualizer, machine-control, automation, nodejs, linux, macos, docker

## Member repositories
- cncjs/cncjs (main) score 98

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:07:06.381009+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T02:19:09.314920+00:00, confidence not recorded.
  - readme: https://github.com/cncjs/cncjs (fetched 2026-08-28T04:07:06.381009+00:00, sha ddd9c1f5c9e4)
  - homepage: https://cnc.js.org (fetched 2026-08-29T10:02:24.443317+00:00, sha dba700733e7f)
  - site_page: https://cnc.js.org/docs (fetched 2026-08-29T10:02:24.452547+00:00, sha aa04eabf519b)
  - site_page: https://cnc.js.org/docs/user-guide (fetched 2026-08-29T10:02:24.454399+00:00, sha 8152d825b3df)
  - site_page: https://cnc.js.org/docs/installation (fetched 2026-08-29T10:02:24.456316+00:00, sha 9c8b98da36d5)
- Data as of 2026-08-30T08:39:29.467469+00:00.
