# Yard Sloth: walk your yard once, let open agents babysit the garden

> Source: <https://dev.to/myluco/yard-sloth-walk-your-yard-once-let-open-agents-babysit-the-garden-364a>
> Published: 2026-10-24 16:37:33+00:00

*This is a submission for the [Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady](https://dev.to/challenges/hacktoberfest-week3-2026-10-19)*

**Yard Sloth** is a local-first garden assistant for people who want a cared-for yard without becoming a part-time horticulture researcher.

You enter the name of plants in your yard (in the future, you will take one **yard walk** on your phone—snap photos), tag locations like *"front bed, left of steps"*—and confirm the plant list. From there, three cooperating agents:

`.ics` you can drop into any calendar app.
The sloth branding is intentional: the app is built for **slow, steady laziness**. You do the one walk; open models and agent workflows do the recurring mental load. You can use it every day to keep your yard in check. Urgent tasks are marked with an urgent icon, so you can see what you really need to do today.

**Local demo:** clone the repo, run `python3 server/main.py` and `npm run dev`, open `http://localhost:3000`. You will need Ollama running with the models configured in settings.

**Video demo:** [https://youtu.be/AV80gnBCeYw](https://youtu.be/AV80gnBCeYw)

**Walk your yard once with your phone, confirm the plant list, and get a care calendar plus evening frost alerts. Everything runs locally on your own machine.**

The repository divides responsibilities into distinct subsystems:

```
├── agents/             # CrewAI Agent & MCP Tooling Subsystem
│   ├── agent/         # Census, Calendar, and Frost watch agents
│   ├── assets/        # Agent personas, prompt templates & roles
│   ├── mcp/           # MCP tools (live web browsing for weather, frost, care rules)
│   ├── memory/        # Ephemeral in-memory session state (zero disk storage)
│   ├── main.py        # CrewAI pipeline coordinator
│   └── README.md      # Agents architecture documentation
│
├── server/             # 100% Pure Python HTTP Backend
│   ├── api/           # REST endpoint handlers (routes.py)
│   ├── server/        # Multithreaded HTTP server engine & network config
│   ├── main.py        # Python server entry point (python3 server/main.py)
│   └── README.md
```

…
Public repo: [github.com/myluco/YardSloth](https://github.com/myluco/YardSloth)

All substantive work for this submission landed **October 21–22, 2026** (initialize → LangGraph judge pipeline → task list polish), inside the Week 3 entry window.

Yard Sloth is **open-source AI at the core**, not a thin wrapper around a single chat API.

| Layer | Tech | Role | 
|---|---|---|
| LLM workflows | **LangGraph** (`dual_judge_graph.py` , plant-care workflow) | Parallel **gather** calls, then a**judge** merge | 
| Inference | **Ollama** on your machine | Open-weight models; swappable via settings/env | 
| Tools | MCP web browse | Live horticulture + **Open-Meteo** —no static`care_rules.json` | 
| API | Pure Python `server/` | REST for the UI | 
| UI | React + TypeScript | Yard walk, confirm, calendar, tonight | 

**Default Ollama stack** (each role can be overridden):

`gemma4:31b-cloud`) — primary gather / care-profile draft
Plant-care refresh is deliberately **three Ollama calls**: `research_a` and `research_b` in parallel, then `judge`. Terminal tracing (`[YardSloth LLM]`) makes it obvious when the sloth is thinking vs. when Python is enforcing dates.

**Model explains, code decides:** frost thresholds (36° / 32° / 28° F), old-wood vs. new-wood prune windows, and calendar spacing are **deterministic Python**—not LLM guesses. That’s how you get trustable alerts without babysitting the model.

Closed garden apps want your photos, your address, and a subscription. Yard Sloth flips that:

A closed API could summarize a blog post about hydrangeas. It couldn’t give me **reproducible frost math**, **calendar exports I own**, and **two-model disagreement resolved by a judge**—unless I paid forever and sent my yard data upstream. Open stacks made the lazy path *local*.

This session is related to publishing the project to dev

Before Yard Sloth, my “system” was: random Notes app bullets, one panicked frost search per cold snap, and pruning guilt.

Now:

Conservative estimate: **2–3 hours/month** of tab-hopping and calendar thrashing replaced by a Sunday glance and an occasional frost checklist. The sloth wins by doing less, more reliably.

I'm entering:

I'm *not* claiming categories for tools I didn't integrate (MongoDB Atlas, Render, Sentry tracing, etc.).

Built for **Hacktoberfest 2026 — Slow and Steady**. Questions welcome in the comments.
