A Guide by Humans, for Humans.

About Artoo

Artoo is a micro-framework for robotics. It provides a simple, but powerful Domain-Specific Language (DSL) for robots and physical computing.

With Artoo, you can easily connect multiple, different hardware devices together at the same time into a single solution. Artoo makes telling robots what to do incredibly simple and fun.

Artoo is conceptualy influenced by Sinatra ( Sinatra ) as well as borrowing some code from it.


Artoo provides a robust actor-based messaging architecture, that can support fully multi-threaded operation and high-concurrency, as long as it is supported by the Ruby version in which it is executing.

To a large extent, this is due to being built on top of Celluloid ( Celluloid ), Celluloid::IO ( Celluloid::IO ), and Reel ( Reel ).


Artoo uses Celluloid to control different hardware devices at the same time. It receives events with Celluloid::IO evented sockets.

Ruby implementations

Artoo works on JRuby or, as we need an actual implementation of Ruby that supports threads.

How it works

A Robot represents the primary interface for interacting with a collection of physical computing capabilities.

A robot has devices plugged into it and you can tell them what to do or receive notifications of events from them.


Artoo uses the adapter pattern to handle connections to a particular type of machine (similar to Rails handling database connections). This way a single interface for communication is used and the details of getting through the protocol are abstracted.

For this purpose, several integrations are used to control the communications with the hardware and each supported device has a driver to control its behaviour by exposing methods according to its capabilities.

How it Works

A publish and subscribe architecture is used for things happening in the devices.


Applications use the Artoo API to communicate with Artoo Master class. This communication can be make using HTTP Rest requests or WebSockets.

The Artoo Master Class then sends messages to the robots and receives feedback from them.