Run a demo
loading presets…
…or build a custom roster
Planning…
The plan
Street-following route from OpenRouteService; ordering by OR-Tools. The map draws from the route tool's own GeoJSON — never from the model's retelling.
How it works
The agent is a hand-rolled loop — no framework —
around a small model (loading…)
doing native tool calling.
Three mechanisms keep it honest: a referee
that validates every tool call against its schema before
anything executes (violations bounce back as errors the
model reads and corrects); an auditor —
plain code, no AI — that refuses to accept a finished
plan until every dog's actual walk interval has a weather
check at that dog's location; and a structured
finish line: the model ends by calling a
submit_plan tool whose validated arguments are
the final plan. Weather verdicts come from
threshold tables in code, not from the model's judgment
— the model relays them and plans around them.
The tools
- geocode_addresses — turns street addresses into coordinates (Nominatim / OpenStreetMap; batched and cached).
- check_weather — hourly forecast for a place, date, and time window (Open-Meteo), reduced in code to a deterministic verdict: OK, CAUTION, SHORTEN, or DO NOT WALK.
- optimize_route — real street-walking distances (OpenRouteService) fed to a route-ordering solver (OR-Tools), returning the visiting order, each dog's walk interval, and the map geometry.
- submit_plan — the finish line: a tool with no implementation, whose schema-validated arguments are the plan itself.
The service runs on a retired laptop in a closet (the inference is rented per-token); the whole stack costs about a dollar a month. Source, tests, and the full build history: the repo.