FarmBot is an open-source CNC farming machine and software package designed for small-scale precision food production. Similar to 3D printers and CNC milling machines, FarmBot hardware employs linear guides in the X, Y, and Z directions. This allows for tooling such as seed injectors, watering nozzles, sensors, and weed removal tools to be precisely positioned and used on the plants and soil. FarmBot is controlled by an Arduino/RAMPS stack and an internet connected Raspberry Pi 2. The hardware is designed to be simple, scalable, hackable, and easily produced. Using the web application, the user can graphically design their farm or garden to their desired specifications and synchronize the numerical control code with the hardware. Other features include storing and manipulating data maps, a decision support system to facilitate data driven design, access to an open plant data repository, and real-time control and logging.