<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Athul Jenson</title>
    <description>The latest articles on DEV Community by Athul Jenson (@2aj0).</description>
    <link>https://dev.to/2aj0</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4164252%2F01a1930c-d2c2-47d6-a4d3-469a07a45b86.png</url>
      <title>DEV Community: Athul Jenson</title>
      <link>https://dev.to/2aj0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/2aj0"/>
    <language>en</language>
    <item>
      <title>Local Micro-Garden &amp; Frost Date Advisor | Touch Grass Challenge</title>
      <dc:creator>Athul Jenson</dc:creator>
      <pubDate>Thu, 08 Oct 2026 16:15:05 +0000</pubDate>
      <link>https://dev.to/2aj0/local-micro-garden-frost-date-advisor-touch-grass-challenge-1bhi</link>
      <guid>https://dev.to/2aj0/local-micro-garden-frost-date-advisor-touch-grass-challenge-1bhi</guid>
      <description>&lt;h2&gt;
  
  
  🌿 Overview: Bringing AI Outdoors ("Touch Grass")
&lt;/h2&gt;

&lt;p&gt;Developers spend countless hours glued to screens and debugging code. For &lt;strong&gt;Week 1 of the Hacktoberfest Open-Source AI Challenge&lt;/strong&gt; under the &lt;strong&gt;"Touch Grass"&lt;/strong&gt; theme, I built the &lt;strong&gt;Local Micro-Garden &amp;amp; Frost Date Advisor Agent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This interactive CLI agent evaluates regional frost limits, identifies cold-hardy crops, and creates an actionable outdoor task list based on how many hours you want to spend outside getting your hands in the soil.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Tech Stack &amp;amp; Local Setup
&lt;/h2&gt;

&lt;p&gt;The agent runs 100% locally on a Mac with zero external API dependencies or cloud key limits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Framework:&lt;/strong&gt; &lt;a href="https://mastra.ai/" rel="noopener noreferrer"&gt;Mastra&lt;/a&gt; (&lt;code&gt;@mastra/core&lt;/code&gt;) for agent orchestration and tool execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM Engine:&lt;/strong&gt; Local &lt;code&gt;llama3.1&lt;/code&gt; model running via &lt;a href="https://ollama.com/" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; with native tool-calling support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety &amp;amp; Validation:&lt;/strong&gt; &lt;a href="https://zod.dev/" rel="noopener noreferrer"&gt;Zod&lt;/a&gt; for strict tool input/output schema enforcement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime:&lt;/strong&gt; Node.js + TypeScript (&lt;code&gt;tsx&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💡 Architecture &amp;amp; Tools
&lt;/h2&gt;

&lt;p&gt;The agent coordinates two Mastra tools to build the garden plan:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;getFrostDataTool&lt;/code&gt;&lt;/strong&gt;: Analyzes historical frost dates and recommends cold-weather crops (such as Spinach, Garlic, Kale, and Winter Cabbage).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;generatePlanTool&lt;/code&gt;&lt;/strong&gt;: Converts your target outdoor time into a step-by-step checklist covering soil prep, mulching, and frost sheet installation.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🤖 Local Agent Definition (&lt;code&gt;src/agent.ts&lt;/code&gt;)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Agent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@mastra/core/agent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createOpenAI&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@ai-sdk/openai&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getFrostDataTool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;generatePlanTool&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./tools.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Connect to local Ollama instance running llama3.1&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ollama&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createOpenAI&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;[http://127.0.0.1:11434/v1](http://127.0.0.1:11434/v1)&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ollama&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;gardenAgent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;micro-garden-agent&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Micro-Garden Frost Advisor&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;instructions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`
    You are an AI assistant designed for the "Touch Grass" challenge.
    Your goal is to evaluate local frost dates and produce an outdoor weekend gardening plan.
    Encourage hands-on outdoor physical activity and practical soil maintenance.
  `&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;ollama&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;llama3.1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;getFrostData&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;getFrostDataTool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;generatePlan&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;generatePlanTool&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📸 Demo &amp;amp; Terminal Output&lt;br&gt;
Running the CLI with Bengaluru and 5 outdoor hours:&lt;/p&gt;

&lt;p&gt;🌱 --- Micro-Garden &amp;amp; Frost Date Advisor Agent --- 🌱&lt;/p&gt;

&lt;p&gt;Enter your City or ZIP code: Bengaluru&lt;br&gt;
How many hours do you want to spend outside gardening this weekend? 5&lt;/p&gt;

&lt;p&gt;Consulting outdoor garden advisor...&lt;/p&gt;

&lt;p&gt;--- YOUR WEEKEND OUTDOOR PLAN ---&lt;br&gt;
Here is your customized outdoor action plan for Bengaluru:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Soil Prep: Apply a thick mulch layer to protect cold-hardy crops.&lt;/li&gt;
&lt;li&gt;Planting Checklist: Plant Spinach, Garlic, and Winter Cabbage.&lt;/li&gt;
&lt;li&gt;Frost Covers: Install simple protection sheets over sensitive beds.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enjoy your 5 hours outdoors in the garden! 🌻&lt;br&gt;
🔗 Repository &amp;amp; Quickstart&lt;/p&gt;
&lt;h2&gt;
  
  
  GitHub Repository: github.com/2AJ0/touch-grass-micro-garden-agent
&lt;/h2&gt;

&lt;p&gt;How to Run Locally&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Pull the tool-calling model in Ollama&lt;/span&gt;
ollama pull llama3.1

&lt;span class="c"&gt;# 2. Clone &amp;amp; Install&lt;/span&gt;
git clone &lt;span class="o"&gt;[&lt;/span&gt;https://github.com/2AJ0/touch-grass-micro-garden-agent.git]&lt;span class="o"&gt;(&lt;/span&gt;https://github.com/2AJ0/touch-grass-micro-garden-agent.git&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;touch-grass-micro-garden-agent
npm &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# 3. Launch CLI Agent&lt;/span&gt;
npx tsx index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;What winter crops are you planning for your garden this season? Let me know in the comments! 🍃&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>ai</category>
      <category>mastra</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
