HTML5 MODS setup tutorial

This short tutorial shows how to setup the new HTML5-based version of MODS


  • editing
    • subgraph copy paste
    • nested module graphs
  • ui
    • collapse nodes
    • refactor for skinning
  • processes
    • three-axis rough and finish cuts
  • Cross-Origin Resource Sharing (CORS)
  • formats
    • HPGL input
    • SVG export
    • DXF export
  • ...

To install and run mods locally

You need to first install node.js.

Install the http-server npm package. Including '-g' sets the installs the package gloabally, allowing you to use it as a command line tool:

npm install http-server -g

Clone the mods repository:

git clone ssh://

Use the command line to navigate to the root of the mods repository:

cd mods

Start up a server:


Open a browser tab and go to which is the same as http://localhost:8080 to view the server that you just started.

Depending on how to need to use mods you can start local servers located in mods/js, for example, if you start from the root of the mods repository:

cd js

node printserver.js

Mods Connection Debugging

set correct serial port permission (do this each time you reboot the machine): chmod a+rwx /dev/ttyUSB0

start serialserver in the terminal so you can see the logs as it tries to connect. navigate to the mods/js folder in the terminal (probably use cd ~/mods/js) and type: node serialserver.js ::ffff: 1234

check serialserver is running with: ps aux | grep node

Common Issues

  1. Help! My SRM-20 will only run a single job and then go dead! Chances are you are using printserver.js instead of deviceserver.js to connect to the machine. For now, we need to treat the SRM-20 as a device instead of a printer.
  2. Argg... why do I need to reset permissions on /dev/usb/lp0 every restart? You can use sudo add_user username lp and sudo add_user username lpadmin to make persistent permissions.
  3. Why is my web socket connection refused when the addresses are the same? This can happen due to a difference between IPV4 and IPV6 addresses. In your start mods server script, try changing to ::ffff: and see if it helps.

Forked tutorial: