Motivation is a Python library for interacting with farmOS servers over API.

This library was developed to support more custom use cases that interact with the farmOS server from a Python scripting environment. It can be used to build custom importers and exporters that interface with CSV, IoT and other APIs. also helps integrate with existing scientific and GIS tools that exist in the Python ecosystem.

The farmOS Aggregator also uses to communicate with farmOS servers.

Quick start

Learn by example.

1. Install

To install using pip:

$ pip install farmOS~=1.0.0b

To install using conda see conda-forge/farmos-feedstock

2. Create a farm client instance

from farmOS import farmOS

farm_client = farmOS(
    hostname= "",
    client_id = "farm",
    scope = "farm_manager",

3. Authorize with farmOS server

token = farm_client.authorize()
# Complete username and password prompts.

4. Get farmOS server info

info =

5. CRUD Operations with a farmOS log

# Create observation log
observation_log = {
    "attributes": {
        "name": "My Great Observation",
        "status": "pending",
        "notes": "Some notes"       
log = farm_client.log.send('observation', observation_log)
log_id = log["data"]["id"]

# Update the log status to "done".
done = {
    'id': log_id,
    "attributes": {
        "status": "done",
updated_log = farm_client.log.send('observation', done)

# Delete the log.
farm_client.log.delete('observation', log_id)

Next steps

Now that you know the basics, dive deeper into following topics: