The software for your friendly painting robot kit!
JavaScript CSS HTML
Latest commit d77315e Jul 23, 2016 @techninja techninja committed on GitHub Merge pull request #272 from evil-mad/upgrades
Electron Upgrades


Join the chat at

Software for drawing robots, and your friendly painting robot kit, the WaterColorBot!

Downloads / Install

Click here for the latest release, then click the green button below the release notes that matches your operating system to download the install package.

Linux users: Simply copy folder from zip file to your desktop or other folder, then run the executable inside. System installer in the works!


  • Real-time SVG preview and shape tracing, with fully automatic path filling, color similarity chooser, and outline manager. Load your SVG and just click to paint automatically!
  • Single path based tracing for fills, allowing for an infinite array of creative path based crosshatches.
  • Built-in SVG editor and importer from the open-source project Method-Draw
  • Optional visual path position checking, ensuring that overlapping or invisible portions of paths aren't drawn.
  • Centralized codebase for all platforms allows for easy hacking.
  • Scratch and Snap support via WaterColorBlocks.
  • Modular code addition via RoboPaint Modes: Control your bot with a simple web app leveraging everything already written for RoboPaint!
  • Allows programatic (including remote) painting and drawing via the high level RoboPaint API, the low level cncserver API, or the simplified (HTTP get-only) Scratch API


RoboPaint is made of modes that are their very own independent projects! This project repository holds all the code to manage the modes, global settings, running the API, and the connection to a robot. The modes are their own web applications that run (almost) completely on their own through the mode API.

Here's a list of all the modes that currently ship with RoboPaint. If you have an issue or a feature to add to any of these, open it in the mode's own project instead of this one.

  • Edit mode
    • For creating/editing/importing SVG art that will be saved to a shared location that modes can use as they choose.
  • Print Mode
    • An automatic paint mode meant to handle most SVG art easily and without much customization
  • Remote Print Mode
    • Allow for high level sending of SVGs for printing directly with or without user interaction via an API.
  • Spiral Mode (experimental)
    • A mode to take raster images and convert them into spiral art using adjusted brush heights for luminosity.
  • Example Text Mode (experimental)
    • An example mode for rendering text, and to show developers how to create a mode using most of the available modules and API.


Stuck on something? Submit an issue! Click the issues tab and see if someone is covering your question or problem, if not, ask away! Someone will be around to help soon.

Know how to fix a problem? Or want to add a new feature?? Submit a pull request! Just fork the repo using the button on the RoboPaint github homepage, and this will give you your own version of RoboPaint. Make your change in a few commits to your branch, then click the pull request button at the top! Talk about what changes you made and submit. A maintainer of the project will check your work, possibly ask you to fix a few more things, and then if all is well, your work will be merged into the project!

Contributing to the Project

Want to help be a part of RoboPaint? Maybe spruce it up, or hack it to bits into your own thing? Here's a rough and tumble guide to getting set up:


Electron (v0.34.x)

RoboPaint is an HTML5/Node.js application that runs in electron. Though the main.html code may somewhat render in a regular browser window, it's still a node.js application that requires its low level file access and other APIs. This is installed via npm install when run at the root.

Install Node (4.x+) for node & npm

Required for automated builds and installation content. The build and dependency system all uses node.js. npm is installed along with it. If you already have node installed, you can skip this part.

Build Tools!

  • CNC Server uses the node-serialport module, a low-level partially native module that needs to be built/compiled for every OS.
  • These are pre-compiled for each release in the robopaint-build repository, which you can easily use to replace the node_modules folder within cncserver/node_modules/serialport/
  • BUT, if you're experimenting with new versions of modules, you're going to need to be able to build your own, so continue on.
  • This is the easiest, as most FOSS ships as source to be built on the target machines, so you shouldn't have to install anything new for this at all.

Building natively for Electron with node-pre-gyp

  1. Run npm install node-gyp node-pre-gyp -g to install globally the node native builder. (ignore this if you already have them)
  2. Pull down/clone your fork of the RoboPaint repository with git (or just download a zip of the files).
  3. In your terminal/command line interface, go to that folder and run npm install
    • This will run through all the required module dependencies and install/build them to the best of its ability.
    • This will have built the node-serialport for io.js, but we actually need the binary created with electron headers, soo..
    • Follow Jed's instructions here to build the binary correctly.
    • That's it! You should now be installed and ready to hack. To update CNC server just run npm install cncserver from the project root and it should pull from the latest master.

Running RoboPaint from source

  • Assuming this is all working, get yourself to the root of the repo and simply run npm start, this will run it's local version of electron pointed at the repository root.
  • Remember: Alt+Ctrl+I to open the debug console, Ctl+R will reload if the console is open, and a reload only reloads the contents of the window, and will not reload the application main process.


This open source project is built on top of the CNC server project which provides a speedy framework of API calls to interact with serial connected drawing robots, while RoboPaint is the clean interface in an easy to install app!

All code MIT licensed. Created by TechNinja, with support and collaboration from Evil Mad Scientist. Don't forget, you can discover more crazy maker fun with Sylvia's Super-Awesome Maker Show!