Hi everyone ![]()
I hope it’s OK to share something a bit personal and a bit technical.
I’m Martin, a farmer in the UK running a small ecological, direct-to-public farm. We use farmOS at the core of our operation, and I genuinely believe it’s one of the most important open-source tools agriculture has.
Over the last year I’ve been building an open-source project called Symbiosis, very deliberately around farmOS — not instead of it. The aim is to extend farmOS into areas that small, direct-selling farms often struggle with most: crop planning tied to reality, and integration with ecommerce (subscriptions, orders, packing, delivery).
The repository is here if it helps with context:
https://github.com/Middleworld/symbiosis-farm-management
I should be upfront: I’m not a professional developer. I’m a farmer who’s “vibe-coded” this with a lot of determination, a lot of late nights, and a lot of help from AI. I’ve also had a serious neck operation recently, which has pushed me more into admin/software work than I ever planned — but I’m not about to give up on this.
What does work
- WordPress + WooCommerce is largely working: subscriptions, orders, admin workflows, and a custom admin layer that normalises orders and produces packing / harvest outputs.
- farmOS at the centre: the admin app embeds the farmOS desktop in an iframe (same domain), so staff use one login and move between farmOS and the rest of the stack without separate OAuth flows. Harvest logs and other farmOS views are embedded where needed.
- Succession planning (Symbiosis side): backward planning from harvest windows using live farmOS taxonomy (plant types, varieties, harvest windows, season types), planning by bed and date, and batch creation of seeding / transplant / harvest logs in farmOS.
- Crop planning & harvest views: planting charts, crop-plan timeline, embedded farmOS harvest logs, and stock syncing.
- Field Kit + quick forms integrated into the workflow.
- Shared vocabulary: taxonomy synced from farmOS so planning, admin, and harvesting all use the same terms.
Overall, the architecture feels sound, and farmOS is very clearly the right “farm operating system” at the centre.
Where I’m stuck
The hardest part — and the part I can’t realistically finish alone — is the farmOS side, especially:
- crop-planning gaps (I know the existing crop-planning add-on is incomplete — if it wasn’t, I wouldn’t be here),
- aligning real-world, bed-based planning with farmOS entities and logs,
- clean ways of importing or syncing planning data (CSV / JSON:API),
- and generally finishing that last 20% that only people who really know farmOS internals can see clearly.
Conventions framing
One thing that’s become clearer to me is that Symbiosis is really acting as a conventions layer — an opinionated, documented way of using the existing farmOS data model for bed-based, ecological, direct-market farms — rather than something that belongs in farmOS core itself.
In that sense, I don’t see Symbiosis as competing with or replacing farmOS crop planning, but as a possible reference implementation of a crop-planning convention, with tooling built around it. I’d really value guidance on whether this framing makes sense, and how best to align what I’ve built with farmOS’ conventions-first approach.
What I’m asking for
I’m not looking for someone to take this over, redesign it, or turn it into a product.
What I am hoping for is:
- advice from people who know farmOS well,
- pointers on the “right” way to model or extend crop planning,
- and possibly one or two people interested in collaborating or reviewing specific pieces of the farmOS integration.
This is an open-source, farmer-led project intended to benefit exactly the kind of farms farmOS exists for — small, ecological, direct-to-consumer growers who sit awkwardly between “market garden” and “enterprise ag”.
I’ve put too much of myself into this to walk away, and too much respect into farmOS to try and hack around it blindly.
If this resonates with anyone here, I’d be incredibly grateful to talk — even if it’s just to sanity-check direction.
Thanks for reading,
Martin ![]()