Location Awareness
Location awareness via privacy-friendly GPS tracking (Home Assistant, OwnTracks, GPS Logger). Set location-based reminders and ask about movement history, travel time, and nearby POIs.
Location awareness via privacy-friendly GPS tracking (Home Assistant, OwnTracks, GPS Logger). Set location-based reminders and ask about movement history, travel time, and nearby POIs.
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
This skill provides commands to execute. When the user asks about location, RUN the appropriate command below.
scripts/location.shEvery command must be run via
scripts/location.sh. Example:
User asks: "How long to walk home?"
You run:
scripts/location.sh eta home --mode walk
Output:
4.6 km, about 45 min walkDo NOT run
eta or other subcommands directly — they don't exist as standalone commands.
| User says | Run this (copy exactly) | Reply with |
|---|---|---|
| "Where am I?" | | Zone name only |
| "Map" / "map link" | | Just the URL |
| "What are my coordinates?" | | Lat/lon from output |
| "How long to walk home?" | | Distance + duration |
| "How long to bike to X?" | | Distance + duration |
| "How far is X by car?" | | Distance + duration |
| "Remind me to X when I get to Y" | | Brief confirm |
| "What reminders do I have?" | | Bullet list or "None" |
| "List my places" | | Bullet list |
| "List places nearby" | | Sorted by distance |
| "List my pubs downtown" | | Filtered list |
| "Save this spot as X" | | Confirm |
| "Delete place X" | | Confirm |
| "Disable the grocery rule" | | Confirm |
| "List my geofence rules" | | Bullet list |
| "When was I last at X?" | | Date/time |
| "Where have I been today?" | | List of places |
| "Find me a cafe nearby" | | POI list with distances |
| "Any pubs within 1km?" | | Filtered POI list |
| "How long was I at work this week?" | | Hours per place |
Response style: Terse. No preamble. No "Here's your location:". Just the answer.
All via
scripts/location.sh <command>:
| Command | Description |
|---|---|
| Current location, geofences inside, map link |
| Just the HERE WeGo map link |
| Check for triggered actions/reminders (used by cron) |
| List saved places |
| List all geofences with full details |
| Add one-shot location reminder |
| List pending reminders |
| Save current location |
| Modify a place |
| Delete a place |
/ | Toggle geofence on/off |
| When was I last at a place? |
| Find nearby POIs (cafe, pub, restaurant, etc.) |
| Time spent at each place, visit counts |
| Alert when approaching a location |
| Travel time and distance to a place |
Note:
eta accepts saved place names, coordinates (lat,lon), or any place name (geocoded via OpenStreetMap, biased to current location).
Note:
status returns the zone name if in a known place, otherwise reverse geocodes to a street address (e.g., "123 Main Street, Downtown").
Geofences — Saved places with lat/lon, radius, and optional action. Persistent.
Reminders — One-shot alerts tied to a place. Deleted after delivery.
Region/Category — Optional tags for filtering (e.g., "downtown", "pub").
Edit
scripts/config.json:
Home Assistant (default):
{ "provider": "homeassistant", "homeassistant": { "url": "https://your-ha.example.com", "token": "your-long-lived-token", "entity_id": "device_tracker.phone" } }
OwnTracks:
{ "provider": "owntracks", "owntracks": { "url": "https://owntracks.example.com", "user": "username", "device": "phone" } }
Generic HTTP:
{ "provider": "http", "http": { "url": "https://your-api.com/location", "headers": {"Authorization": "Bearer token"} } }
GPSLogger (file-based):
{ "provider": "gpslogger", "gpslogger": { "file": "/path/to/location.json" } }
Secrets support:
"env:VAR_NAME" (reads from environment variable) or plain string.
Alternative: Configure entirely via environment variables (no config.json needed):
| Provider | Env variables |
|---|---|
| , , , or (default: ) |
| Home Assistant | , , |
| OwnTracks | , , , |
| HTTP | |
| GPSLogger | |
Env vars take precedence over config.json values. Set them in
~/.openclaw/.env or your shell environment.
Output format: Most query commands output human-readable text by default. Add
--json for JSON output (useful for scripting).
Customize walking/biking speeds for ETA calculations in
scripts/config.json:
{ "speeds_kmh": { "walk": 6, "bike": 15 } }
Edit
scripts/geofences.json:
{ "geofences": [ { "id": "grocery", "name": "Grocery Store", "lat": 40.7128, "lon": -74.0060, "radius_m": 30, "action": "shopping_tasks", "cooldown_hours": 4, "enabled": true, "region": "downtown", "category": "shop" } ], "location_reminders": [], "proximity_alerts": [] }
Use OpenClaw's built-in cron to run periodic location checks. Add a job to
~/.openclaw/cron/jobs.json:
{ "name": "Location Check", "schedule": "*/5 * * * *", "prompt": "Run scripts/location.sh check --json and notify me of any triggered actions, reminders, or proximity alerts.", "channel": "signal", "to": "+1234567890", "wakeMode": "now" }
This keeps scheduling within OpenClaw rather than requiring external systemd services.
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.