CNCjs — Self-Hosted, Open-Source

Web interface for CNC milling controllers running Grbl, Smoothieware, or TinyG.

License: MIT. Built with: JavaScript, Stylus, G-code, Shell, HTML, PowerShell, Dockerfile, Handlebars. Website: https://cnc.js.org/. Source: https://github.com/cncjs/cncjs/.

Features

  • Supported controllers
  • Desktop App for Linux, Mac OS X, and Windows
  • 6-axis digital readout (DRO)
  • Tool path 3D visualization
  • Simultaneously communicate with multiple clients
  • Responsive view for small screen display with device width less than 720px
  • Customizable workspace
  • Custom widget (since 1.9.10)
  • Custom MDI (Multiple Document Interface) command buttons (since 1.9.13)
  • My Account

Installation

git clone https://github.com/creationix/nvm.git ~/.nvm cd ~/.nvm git checkout `git describe --abbrev=0 --tags` cd .. . ~/.nvm/nvm.sh

Why self-host CNCjs

Self-hosting gives you three things SaaS can’t: data ownership (the files live on disks you control), cost predictability (a one-time setup vs. recurring per-seat fees that grow with your household or team), and longevity (open-source means the app keeps working even if the maintainers move on, since you can pin a working version). The trade-off is that you take on the operational work of running a server, applying updates, and handling backups.

What hardware do you need

Most self-hosted apps run comfortably on modest hardware — a Raspberry Pi 4, a mini PC, a NAS with Docker support, or a small VPS is usually enough for personal or family use. CPU and RAM requirements scale with how many simultaneous users or how much data you push through CNCjs. Storage requirements depend on the kind of data you keep; check the README for guidance on data retention.

Where to go from here

  • Browse the full self-hosted app directory
  • Compare self-hosted alternatives side-by-side
  • DevOps roadmap — learn the skills to run your own server

Last verified: 2026-04-28