FarmBot Sequence Builder and Web App Roadmap

A project log for FarmBot - Open-Source CNC Farming

FarmBot is an open-source CNC farming machine and software package built for small scale, hyper local, DIY food production.

Rory AronsonRory Aronson 07/18/2015 at 17:040 Comments

As the FarmBot hardware continues to improve and we polish up the core functionality of our embedded codebases, it is time to start looking at how users will use their hardware in meaningful and fully configurable ways. We have decided to create something called the ‘Sequence Builder’ – a drag-and-drop interface on our web application where the user can configure the most basic operations that FarmBot can execute, and combine those basic operations to form a longer, more complex sequence of things to do. This was inspired by the interface proposed by the OpenTrons project, and we’re excited to see it come together. Here is a mockup of what we are building towards:

Sequence Builder Soft Colors

Our Web App Roadmap
  1. Initially, we will build in support for all of the basic operations we currently have in the manual control page: relative and absolute movements, reading and writing pins, sending errors, and waiting. All parameters will need to be manually entered by the user. A sequence can be created from these operations, named, and saved. Saved Sequences can also be used a components of larger sequences.
  2. Next, we’ll make another page on the web app that will allow the user to ‘schedule’ their sequences to be executed at a certain time, or on a repeating basis.
  3. Then we’ll need the ability for Sequences to have their own parameters, and for parameters of sub-operations and sub-sequences to ‘Inherit’ their value from their parent sequence. This will allow for a very complex sequence to be applied to one set of coordinates at the top level without having to change all of the individual parameters in the sub-operations as long as they are initially set to ‘Inherit’. We will also want to be able to set parameters from a list of variables such as Plant-62_X-Coordinate, or Tool-Bay-4_Z-Coordinate.
  4. At this point, we may be able to take a Growing Guide from OpenFarm and translate it into a schedule of operations.
  5. Now we’ll need the ability to intuitively create a plant database (where plants are located, their type, and their age). This will be in the form of the ‘Farm Designer’ page on the web app. This will allow users to schedule complex operations for specific plants or groups of plants. A sequence scheduled for a group of plants will run as a loop for each plant in the group.
  6. By now a user will be able to fairly efficiently tend to a lot of different plants. We can then start optimizing certain parameters based on other data sources (weather, soil probe, etc) via the Decision Support System (DSS).

The goal of all of this is to allow the user complete control down to every parameter of every operation that FarmBot executes. By reducing FarmBot’s complex functions to the most basic operations, we allow users to easily make the device work with new tools, in new ways, and to the person’s exact needs and desires. Here are some of the ideas for how sequences could be created using other sequences and even variables:

FarmBot Block-Sequence-DSS Architecture (1)

Obviously steps 2-6 above are very far off, and we’ll be focusing first on step 1, but that is the overall plan in a nutshell. Interested in helping us out? Check out the web application repo and our production site at!