Skip to content
Pocket Homelab
Get the appComing soon to the App Store

Pocket Movement

v0.3.3 · Self-hosted · MIT

Where you have been, on your own server.

Pocket Movement records your location from apps you already have, such as OwnTracks, Overland or the Dawarich app, and turns the points into a timeline of places and journeys. A map of any day, insights for the year, and a scratch map of the countries you have been to, all in one binary and one SQLite file.

  • Included in Pocket Box
  • Sign in with Pocket Core
  • Works with OwnTracks and Overland and Dawarich and Home Assistant and OpenStreetMap
Pocket Movement on an iPhone: a Thursday in the city, home to the office and a lunch walk, 5 km travelledPocket Movement on an iPhone: a Thursday in the city, home to the office and a lunch walk, 5 km travelled

Timeline

Every day as places and journeys.

Points become visits, where you stayed, and journeys, how you moved between them, with the transport mode guessed from speed and the phone's own activity. Confirm, decline or rename a visit, and correct a mode once.

A Thursday on the timeline: home, driving to the office, a walk to a café suggested as a new place, and back, beside the mapA Thursday on the timeline: home, driving to the office, a walk to a café suggested as a new place, and back, beside the map

Map

Any day, week or year on the map.

Journeys coloured by speed or mode, every point, a heat map, the fog of war, your saved places and where you are now, live. Distance, time on the move and countries sit underneath.

  • Day, seven days, month, year or everything
  • GPS spikes are left out of routes and totals, not deleted
A Saturday day trip on an iPhone map: 57 km from home to a neighbouring capital, two countriesA Saturday day trip on an iPhone map: 57 km from home to a neighbouring capital, two countries

Insights

Where the time went.

Distance by month and by transport mode, the share of time at home, at work, elsewhere and on the move, weekdays, top places and records, plus a calendar heat map and a year in review.

  • Saved places name and confirm every visit inside them, past ones too
  • Other places are named by OpenStreetMap; rename one and its visits follow
Insights for 2026: 277 km, 15 days, 45 visits, two countries, distance by month and where the time wentInsights for 2026: 277 km, 15 days, 45 visits, two countries, distance by month and where the time went

Countries

A scratch map that works offline.

Country borders are built in, so countries need no geocoder and no network. The scratch map fills in as you travel, with days per country and the cities where you stopped.

  • Countries, continents, cities and days abroad
  • New country events reach your phone through Pocket Core
The scratch map of Europe with two countries filled in, and tiles for countries, continents, cities and days abroadThe scratch map of Europe with two countries filled in, and tiles for countries, continents, cities and days abroad

And the rest of it

  • Records from your apps

    OwnTracks, Overland, GPSLogger, Traccar Client, the Dawarich app, Home Assistant or your own app. Each device gets its own key, and OwnTracks and Overland set themselves up from a QR code.

  • Moves in and out freely

    Import Google Takeout, phone timeline exports, GPX, KML, GeoJSON, OwnTracks and CSV, or move over from Dawarich in one step. Export GeoJSON, GPX or CSV.

  • Shares on your terms

    Share your live position with people on the box or by an expiring link, rounded if you like, and keep privacy zones out of everything others see.

  • A Dawarich drop-in

    It speaks the Dawarich API, so Pocket Travel, Pocket Garage and Home Assistant's Dawarich integration work against it unchanged.

Install

One container, one volume.

Run the image with a data folder and open it on port 8080. Create the first account, then connect a phone under Devices. Set TZ so days start and end at your midnight.

Already installed on a Pocket Box, where other Pocket apps can read your timeline through app links.

Every setting in the README →

docker run -d --name pocket-movement -p 8080:8080 -v ./data:/data \
  -e BASE_URL=https://movement.example.com -e TZ=Europe/Berlin \
  ghcr.io/abjelosevic88/pocket-homelab-movement:latest