Noureddine RAMDI / GeoPulse: A lightweight self-hosted platform for GPS data to movement timeline transformation

Created Mon, 04 May 2026 10:23:02 +0000 Modified Sat, 23 May 2026 20:41:27 +0000

tess1o/geopulse

GeoPulse tackles a common developer and privacy enthusiast problem: turning raw GPS points into meaningful movement insights without relying on cloud services. Instead of just plotting dots on a map, it segments location data into stays, trips, and travel modes, creating a searchable timeline that respects your privacy and runs efficiently on modest hardware.

What GeoPulse does and how it works

GeoPulse is a Java-based, self-hosted location timeline platform designed to ingest raw GPS data from a variety of sources like OwnTracks, Overland, GPSLogger, Home Assistant, Traccar, Dawarich, and Colota. It processes these streams to build a timeline of your location history, identifying meaningful stays and trips automatically.

Under the hood, the project applies GPS trajectory segmentation and stay/trip detection algorithms. These algorithms analyze GPS points to detect when you are stationary (a stay) versus moving (a trip), with configurable sensitivity to accommodate different user preferences and travel patterns. It also supports travel mode classification, distinguishing walking, biking, or driving.

The platform integrates with Immich, a photo timeline system, allowing location-tagged photos to appear alongside your movement data. This integration enriches the timeline experience by correlating photos with places and trips.

GeoPulse is built in Java to maintain portability and performance. It keeps resource usage low, typically running under 100MB RAM and using less than 1% CPU in regular operation, making it suitable for deployment on modest servers or even home lab setups.

Multi-user access is supported with OIDC/SSO authentication, which means it can serve as a shared location history platform for teams or families. Bulk import features allow ingestion of historical data from Google Timeline, GPX, GeoJSON, and CSV files.

Deployment options include Docker Compose for straightforward setups and Kubernetes/Helm charts for scalable or cloud-native environments. The codebase is licensed under the Business Source License 1.1, free for personal and non-commercial use but requiring a commercial license otherwise.

How GeoPulse’s trip detection and timeline construction stand out

What distinguishes GeoPulse is its core algorithm that transforms raw GPS trajectories into structured movement patterns. Most tools simply plot GPS points or show a heatmap, but GeoPulse applies heuristics and machine learning to segment continuous GPS streams into stays and trips.

This automatic trip detection is configurable, allowing users to adjust sensitivity based on their travel habits or GPS noise levels. This flexibility is crucial because GPS data can be noisy or intermittent, and different users have different definitions of what constitutes a “stay” or a “trip.” The project’s approach balances accuracy with computational efficiency.

The integration with multiple GPS ingestion sources demonstrates solid engineering discipline. Each source has its own quirks in data format and update frequency, and GeoPulse handles these variations gracefully, normalizing the data into a common format for processing.

The code is surprisingly clean for a project handling complex spatiotemporal data. The modular design separates ingestion, processing, and UI layers well, which aids maintainability and extensibility.

A tradeoff to note is the limitation imposed by the Business Source License. While great for personal use and experimentation, commercial users must seek a separate license. Also, the AI assistant feature for natural-language queries is optional and not the core engine, so it may not be fully mature.

The lightweight resource footprint is another strength. Many location tracking platforms are heavy or cloud-dependent; GeoPulse’s ability to run with minimal CPU and memory overhead makes it fit well in self-hosted scenarios where resource constraints matter.

Quick start with Docker Compose

The simplest way to get GeoPulse running is via Docker Compose. This method is suitable for local or single-server deployments.

### Docker Compose

Fastest path for local and single-server use. See
the Full Docker Guide.

The README references a full Docker guide for detailed setup and configuration, but this snippet highlights the project’s emphasis on ease of deployment.

Who should consider GeoPulse and what to keep in mind

GeoPulse is a solid choice if you want a self-hosted solution for location history that goes beyond raw GPS plotting. It suits privacy-conscious users who want control over their location data and developers interested in integrating or extending a location timeline platform.

The platform’s resource efficiency and integration with multiple GPS sources make it practical for home labs or small teams. The OIDC/SSO support adds a layer of enterprise readiness for multi-user environments.

However, the business source license restricts commercial use without a separate license, which is a significant limitation for companies wanting to build on it. Also, the AI assistant is an optional add-on and may require additional setup.

If you need a tool that automatically segments your GPS tracks into meaningful trips and stays with an option to query your timeline naturally, GeoPulse is worth a closer look. Just be prepared to dive into its configuration and understand the tradeoffs around algorithm sensitivity and data ingestion quirks.


→ GitHub Repo: tess1o/geopulse ⭐ 834 · Java