This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Touch Grass Planner is a small command-line tool. You give it a location, an outdoor activity and a few notes, and it fetches the 7-day forecast and asks a local open-weight model (Gemma, running through Ollama) for a short plan: the best two times to go out, a five-item checklist, and one tip for putting the phone away. It’s for anyone who keeps meaning to go outside and needs a nudge. The screen part takes seconds, and the rest is time outdoors.
Online run with live forecast:
Offline run:
Pics(outdoor observations): A tiny local-AI outdoor planner. It fetches the 7-day forecast and uses an open-weight model (Gemma via Ollama) to suggest when and how to get outside. It still works with no internet, falling back to general seasonal advice.
ollama pull gemma3:4b
node planner.js "activity" "notes"
Example: node planner.js 43.2 54.5 "inspecting insects" "flower pots"
The plan is printed and saved to todays_plan.md.
localhost:11434. Nothing leaves your machine.
Built for the Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass.
Weather data from Open-Meteo. Model: Gemma 3 (4B) running locally through Ollama. The planner calls it at localhost:11434, so nothing leaves my laptop.
Weather: Open-Meteo, which is free and needs no API key.
Code: one Node.js file, planner.js, with no dependencies. It builds a prompt from the date, activity, notes and forecast, sends it to Gemma, and saves the plan to todays_plan.md.
Offline mode: if the forecast request fails, the tool falls back to general seasonal advice and prints that it is not using live data.
Going Outside
I ran node planner.js 29.2 79.5 "inspecting insect" "flower pots". The online plan used the real forecast numbers and picked a warm, dry morning. I went out with gloves, water spray and my phone camera and spent about 35 minutes on my flower pots. I found 4 caterpillars eating the leaves. I picked them off and placed them somewhere safe, away from the pots, so the plants could recover without harming the caterpillars.
What Went Wrong (and What I Fixed) My first offline run named the wrong weekdays (“Saturday, October 13th”, when that date was a Tuesday). The model has no calendar, so I passed it the real weekday in the prompt and told it not to invent weather offline. The weekdays are now correct. It still said “late October” in mid-October and hinted at weather it didn’t have, so a small local model follows instructions only partly. Next I’d try a stricter prompt or a larger model.
It works with no internet. I switched Wi-Fi off and still got a plan. The weather lookup is the only network call, and the code degrades gracefully without it.
My data stays with me. My location and notes go to a model on my own laptop, not a company’s server.
It costs nothing per request. No API key, no credits.
I can change it. Swapping models is a one-line edit, and I can adjust the prompt however I like.
Best Use of Gemma
That’s my Touch Grass Planner. Questions, feedback or suggestions are very welcome in the comments. Now go outside!