Introducing Slicerhub
Slicerhub is a framework to power server based (‘cloud!’) slicing of 3D models for 3D printing. There will be a publicly addressable RESTful API up and running at Slicerhub.com soon. The project is fully open source under the BSD license. Slicerhub allows much lower powered machines to have models sliced on a much more powerful machine over the web. Imagine having a raspberry pi or other small computer controlling your printer and able to slice large complicated files in the cloud and download the gcode. Or run Slicerhub on your more powerful server at home and keep everything on site.
Currently Slicerhub is in early alpha. The core functionality to power the RESTful API is done and I’ve stubbed out how I want to build the web addressable API layer. I hope to complete the RESTful API in the next few weeks (check out rest_api/slice_entry.py). The biggest chunks left to do are listed below and I welcome comments and help on them! Checkout the README for install / running instructions.
https://github.com/hendricksonrw/slicerhub
Major tasks ahead.
0. Get rid of hard coded paths! Move all users, bin paths, writing paths, passwords for testing to a CONFIG file.
1. Finish actual bottle.py methods for the service endpoints to handle receiving files and then addressing the Slicerhub internal API layer to write those files and queue up tasks (internal API layer is finished).
2. Write a lightweight client that simply posts jobs and serves gcode files
3. Get the lightweight HTML client up and running on Slicerhub.com so people can send jobs to be sliced over the web
4. Write an authentication layer (have a plan, just need more time) and start allowing applications to address a public queue for slicing. This will allow other developers to make calls against the internal API
5. Build more robust task queues and have a server image dedicated to grabbing tasks and slicing them.
The basic flow of a call is laid out below.
Slicerhub uses bottle.py, mongodb, and rabbit-mq to do what needs done. There is a install_help folder in the root of the repo with a pip-styled requirements.txt and two shell scripts to install mongodb and rabbit-mq.
General documentation on the RESTful API is here and the README on github explains how to install and get the task queue up and running.
https://docs.google.com/document/d/1Ht6sI_kT_7gZLRYHBQ9EmMfS-7OljsGs8b-6GoUeARE/edit?usp=sharing
This has been a labor of love so it isn’t pretty and shiny and right now. There is a lot of room for improvement. I hope that over the next while I’ll be able to keep working on this and that the community will find it useful. I decided to release this now in its functional but not web-addressable state so I could start getting feedback and help from the community for how to integrate it with other projects. I’m looking at you CoffeSCAD and Octoprint. Keep being awesome!
Ross
Brief intro video to Slicerhub’s functionality.