cd /news/ai-agents/horizon-a-local-ai-sky-planner-that-… Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-148798] src=dev.to β†— pub= topic=ai-agents verified=true sentiment=↑ positive

Horizon: a local AI sky planner that tells you when to step outside

A developer built Horizon, an MIT-licensed open-source Python agent that combines Open-Meteo weather forecasts with Skyfield astronomy data to recommend the best one-to-three-hour window for going outside each day. The pipeline scores hourly blocks on comfort and sky visibility, then uses Gemma (via Ollama, OpenRouter, or AI Studio) to narrate a short alert, with optional SerpApi news, ElevenLabs voice, and MongoDB Atlas or SQLite storage stages. The project was submitted to the Hacktoberfest 2026 Open-Source AI Challenge, Week 1: Touch Grass.

by read5 min views1 publishedOct 10, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge, Week 1: Touch Grass.

#hf26challenge #devchallenge #opensource #ai

Repository: github.com/bhushanvidhate-27/horizon

Live demo: horizon-bhushanvidhate-27.onrender.com

Horizon is a daily outdoor planner that answers one simple question:

When is the best time for me to go outside today, and what can I see in the sky?

Enter a location and Horizon combines weather forecasts with astronomy data to recommend the best one-to-three-hour window for being outdoors. It considers temperature, rain probability, wind, cloud cover, UV, sunrise and sunset, Moon phase, visible planets, constellations, and upcoming sky events.

The result is intentionally short: a useful recommendation, a few things to look for, and a reason to put the phone away.

For example (real run for Hyderabad):

Your best outside window is 04:00–07:00

Weather: Clear sky, 26Β°C (feels 27Β°C), 0% chance of rain, wind 5 km/h, 0% cloud
Sun: up 06:08 / down 17:58
Moon: New Moon (0% lit) β€” dark skies, ideal for stargazing
Look up for: Aquila, Lyra, Cygnus, Sagittarius, Pegasus

Horizon chose that pre-dawn window because clear weather plus a New Moon creates the darkest, starriest conditions of the day. The scoring deliberately balances human comfort with what the sky actually has worth looking at.

Horizon is for people who want a reason to get outside without another screen-heavy app.

The screen is only the starting point. The real goal is to close the tab and look up.

A daily outside alert & sky event planner. Horizon tells you the best time to step outside today, what interesting things are happening in the sky, and then nudges you to put the phone away and actually go look.

It's built with the "Touch Grass" spirit: a short interaction that leads to a real-world experience. Ask once, then leave your phone in your pocket.

Submission for Hacktoberfest 2026 β€” Open-Source AI Challenge, Week 1: Touch Grass Brand-new project, built within the challenge window (Oct 5–11, 2026). Any commits after the Oct 11, 2026 11:59 PM PDT deadline will be noted here as required.

Horizon is an MIT-licensed, self-contained Python project. Its core works with zero paid APIs:

Optional partner integrations are auto-detected and never required:

horizon/
β”œβ”€β”€ agent.py      # pipeline: location β†’ sky β†’ weather β†’ news β†’ narration β†’ voice β†’ storage
β”œβ”€β”€ sky.py        # Skyfield astronomy
β”œβ”€β”€ weather.py    # Open-Meteo window scoring
β”œβ”€β”€ llm.py        # Gemma via Ollama / OpenRouter / AI Studio
β”œβ”€β”€ narrator.py   # deterministic fallback
β”œβ”€β”€ news.py       # SerpApi headlines
β”œβ”€β”€ voice.py      # ElevenLabs TTS
β”œβ”€β”€ storage.py    # MongoDB Atlas + SQLite fallback
β”œβ”€β”€ main.py       # FastAPI + REST API
└── cli.py        # same pipeline from the terminal

Run it yourself:

git clone https://github.com/bhushanvidhate-27/horizon && cd horizon
uv venv && uv pip install -e ".[dev]"
uv run uvicorn horizon.main:app   # β†’ http://localhost:8000

A small agent pipeline, one stage per concern:

location β†’ sky β†’ weather β†’ news β†’ narration β†’ (voice) β†’ storage
Stage What it does Technology
Location City β†’ lat/long (cached) Open-Meteo geocoding
Sky Sunrise/set, Moon, planets, constellations, meteors Skyfield
Calendar New/full moons, meteor peaks, equinoxes, oppositions Skyfield
Weather Scores every 1–3 h block for comfort + clear skies Open-Meteo
News Rare sky-event headlines SerpApi (optional)
Narration Turns facts into a warm human alert Gemma (Ollama default)
Voice Spoken version of the alert ElevenLabs (optional)
Storage Preferences + alert history MongoDB Atlas / SQLite
Tracing One transaction per alert, span per stage Sentry (optional)

Graceful degradation is intentional: missing keys never break the experience. The useful recommendation still appears using only open data and open weights.

Open data makes a real product possible for free.

Weather and astronomy are public knowledge. Open-Meteo and Skyfield let a weekend builder compute a genuinely useful recommendation without a billing account.

Open weights keep the intelligence inspectable.

Narration is the part most likely to hide bias or leak data, so it runs locally through Ollama by default. No prompt leaves the device unless you choose a hosted path. The model can be swapped with a one-line change.

Open source makes small tools durable.

Horizon is MIT-licensed and modular. If a provider changes, only one stage needs updating. The project stays understandable and improvable by anyone.

The most important output isn’t a model response β€” it’s you, outside.

[Add your honest outdoor note here. Example:

β€œI ran Horizon for Hyderabad on a clear New Moon morning. It recommended 04:00–07:00. I stepped outside just before 5 a.m. and could clearly see Lyra and Cygnus rising β€” exactly the dark-sky window it had chosen. That short interaction was the whole point.”]

This is the part I care about most: the screen interaction should be brief and the real-world experience longer.

Best Use of Gemma

Horizon uses Gemma to turn structured weather + sky data into warm, natural daily alerts. It runs locally through Ollama (open weights, no key) and also supports hosted paths. A deterministic template narrator keeps the app working when no model is reachable. (horizon/llm.py, horizon/narrator.py)

Best Use of Render

The live Horizon demo is deployed on Render:

https://horizon-bhushanvidhate-27.onrender.com

Best Use of ElevenLabs

Horizon can turn each daily alert into a short spoken narration so you can listen while getting ready to go outside. Audio is cached by content hash. (horizon/voice.py)

Best Use of MongoDB Atlas

When configured with MONGODB_URI, Horizon stores location preferences and alert history in MongoDB Atlas, with SQLite available as a local fallback. (horizon/storage.py)

Best Use of SerpApi

Horizon can include recent astronomy and rare-sky-event headlines through SerpApi, adding fresh context to a daily recommendation. (horizon/news.py)

Best Use of Sentry

Horizon traces its pipeline stages in Sentry, including location lookup, sky calculations, weather scoring, narration, voice generation, and storage. (horizon/agent.py)

Best Use of DigitalOcean

The repo ships a Dockerfile and a DigitalOcean App Platform spec (.do/app.yaml) with a /api/health health check.

Open-source + open-weight core

No paid API is required for the core experience (Open-Meteo + Skyfield + Gemma).

pytest --cov) β€” every network partner is monkey-patched so the suite runs in about a second offline.ruff + full test suite + packaging smoke test. Built with open data, open weights, and the sincere hope that you close this tab and go outside. 🌿

── more in #ai-agents 4 stories Β· sorted by recency
── more on @horizon 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/horizon-a-local-ai-s…] indexed:0 read:5min 2026-10-10 Β· β€”