Developers

Open models, baked predictions, a strict front end.

Frostline trains an open model once, offline, and ships the predictions. The site is a thin, hardened reader over that artifact. Nothing proprietary, nothing you cannot run yourself.

How it works

1. Location
A US city or your device location gives a latitude and longitude.
↓
2. Frost lookup
A baked TabPFN grid is interpolated to your point. No model runs at request time.
↓
3. Planner
A deterministic function turns your frost dates and today into a sow-this-week list.
↓
4. Advice
An open Gemma model writes the plan up in plain words, with a built-in narrator as the fallback.

Open models, swappable

PieceModelLicenceSwap
Frost datesTabPFN (tabular foundation model)Code Apache-2.0, weights per Prior LabsRetrain the bake on your own station set
Advice proseGemma (open weights)Gemma Terms of Use, output is yoursPoint GEMMA_API_URL at any OpenAI-compatible open model

With no key set, advice falls back to the built-in planner, so the page always renders. Set GEMMA_API_URL, GEMMA_API_KEY and GEMMA_MODEL to turn on live Gemma.

The plan endpoint

One POST returns your frost dates, the plan, and the advice. It validates the body and never runs the model at request time.

POST /api/plan
content-type: application/json

{ "lat": 45.52, "lon": -122.68, "label": "Portland, OR" }

200 OK
{
  "ok": true,
  "plan": {
    "frost": { "lastSpringFrostDOY": 102, "firstFallFrostDOY": 310, "source": "model" },
    "sowThisWeek": [ { "crop": { "name": "Garlic" }, "action": "plant-cloves", "reason": "..." } ],
    "daysToFirstFall": 31
  },
  "advice": { "text": "Your last frost is around ...", "engine": "deterministic" }
}

Repo and licence

Source is available at github.com/zkasuran/frostline. The app code is under a source-available licence (read it, run it, benchmark it). The open models and the NOAA data keep their own terms, named in the repo NOTICE and on the data sources page.