The software for your friendly painting robot kit!
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Join the chat at

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

Downloads / Install

Click here to download the current beta release. This release has many changes that improve the functinality of RoboPaint. Since this a beta release you may expierence bugs. If you do please report it by creating an issue here

Click here for the latest official 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.


RoboPaint 2.1.0 introduces full application logging. If you have a problem starting or running the app, submit your logs with your issue or to Evil Mad Scientist and we should be able to help you a lot more directly.

Log data locations:

  • Windows: %APPDATA%/robopaint
  • Linux: $XDG_CONFIG_HOME/robopaint/logs or ~/.config/robopaint/logs
  • macOS: ~/Library/Application Support/robopaint/logs

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:



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 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. We've included the top four common OS & architecture combinations, so if your dev system is one of those, the file will be copied over after npm install and you should be in the clear to run immediately.
  • If you're experimenting with new versions of modules, or are running on a different arch/OS, you're going to need to be able to build your own, so continue on.
  • Follow the Windows build installation here for node-gyp (the tool used to automate node module builds).
  • I've personally found their suggestion of using the Microsoft provided global install via npm to work perfectly! Just paste this into an elevated/administrator level powershell or command prompt and go!
    • npm install --global --production windows-build-tools
  • 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

  1. Pull down/clone your fork of the RoboPaint repository with git (or just download a zip of the files).

  2. In your terminal/command line interface, go to that folder and run npm install to install dependencies, if there is not a prebuilt serialport module for your architecture npm will try to build serialport for Electron. You may see some errors, but it should re-compile everything that needs it. run npm run rebuild to attempt to rebuild for electron for experimental builds of serialport.

  3. 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, and you'll likely need to rebuild serialport for Electron with npm run fix-serialport.

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!