Open-source farm management and record-keeping system with a JSON:API-based REST API for managing assets, logs, plans, and farm records. Supports self-hosted deployments and managed hosting via Farmier.
farmOS exposes a JSON:API compliant REST API via the farm_api module. All endpoints use the /api path prefix and return JSON:API formatted responses with UUID-based resource identifiers.
- Root endpoint:
/api— returns server metadata, farm details, version, and authenticated user info - Schema endpoint:
/api/schema— JSON Schema graph of all available API resources - Resource pattern:
/api/[entity-type]/[bundle](e.g.,/api/log/activity)
OAuth2 with three supported grant types:
- Authorization Code — recommended for third-party integrations
- Password Credentials — legacy, first-party use only
- Client Credentials — machine-to-machine server integrations
Token endpoint: /oauth/token
Bearer header: Authorization: Bearer {access_token}
OAuth scopes: farm_manager, farm_worker, farm_viewer
- farmOS.js — JavaScript/Node.js library:
npm install farmos| Docs | GitHub - farmOS.py — Python library:
pip install farmOS~=1.0.0b| Docs | GitHub
- Self-hosted: Free, runs on any LAMP/LEMP stack. See installation docs.
- Farmier managed hosting: $75/year base, includes 1 GB storage. farmier.com/pricing
- Website: https://farmos.org/
- API Docs: https://farmos.org/development/api/
- GitHub Org: https://github.com/farmOS
- Blog: https://farmos.org/blog/
- Forum: https://farmos.discourse.group/
- Open Collective: https://opencollective.com/farmos
- X: https://twitter.com/farmOSorg
This repository contains an APIs.json index cataloging the farmOS API along with supporting files for plans, rate limits, and FinOps guidance.