Stop fighting with dirty wrappers and battery drain. Anchor is the native, crash-resistant background location tracking library built for the modern Kotlin Multiplatform stack.
From simple snapshots to complex geofencing, we cover the full spectrum.
Request a one-shot "Last Known Location" instantly, or subscribe to a continuous Kotlin Flow of location updates that keeps emitting even in the background.
Configurable tracking profiles optimize for battery life or high-precision. Our service survives OS kills and utilizes smart duty cycling to save data and power.
Network dead? No data lost. Anchor automatically buffers location points into an internal SQLite database and replays them when connectivity returns.
Configure a standard HTTP REST endpoint, and Anchor handles the upload retry logic. (Planned: MQTT, AWS, GCP, Firebase adapters).
A straightforward, Kotlin-first API that maps directly to the native OS geofencing engine for maximum performance and minimum battery impact.
Go beyond simple circles. Anchor supports both standard circular geofences and complex Polygon Zones for precise area monitoring.
Whether you are tracking fleets or fitness runs, Anchor provides the distinct capabilities you need.
Don't drain the driver's battery. Anchor uses a Finite State Machine to toggle high-precision GPS only when the vehicle is moving.
Capture every turn. Anchor supports High-Frequency Polling for running/cycling apps without the typical background termination issues.
Trigger events exactly when users enter a venue. Our Geofencing Engine wakes up the app silently to sync data or fire local notifications.
Lone worker safety or compliance tracking? Use our Heartbeat Pulse to verify device status even when stationary.
We didn't just port a Java library. We built Anchor from scratch - with love and passion - because we needed it too. It is designed to feel native to your modern Kotlin stack.
val config = AnchorProConfig.build { licenseKey = "CAPTAIN_KEY_123" // Universal settings trackActivity = true minUpdateDistanceMeters = 10.0 // Platform Specifics android { priority = AndroidPriority.HIGH_ACCURACY updateInterval = 5.seconds notification { title = "Anchor Tracking" iconName = "ic_gps" } } ios { desiredAccuracy = IosAccuracy.NAVIGATION autoPause = false } // Pro: Auto-Sync Engine sync { enabled = true url = "https://api.myapp.com/v1/locations" interval = 2.minutes batchSize = 50 httpHeaders = mapOf("Authorization" to "Bearer ...") } } AnchorPro.init(config)
// 1. Check current status (Non-blocking) val status = Anchor.checkPermission(PermissionScope.BACKGROUND) if (status == PermissionStatus.GRANTED) { Anchor.startTracking() } else { // 2. Request Permissions (Suspend function) // Handles OS dialogs & rationale automatically val result = Anchor.requestPermission( scope = PermissionScope.BACKGROUND ) if (result == PermissionStatus.GRANTED) { Anchor.startTracking() } }
// 1. Get One-Time Snapshot val snapshot = Anchor.getLocation() println("Current: ${snapshot.latitude}, ${snapshot.longitude}") // 2. Start Continuous Tracking Anchor.startTracking() // 3. Listen to updates (Foreground & Background) Anchor.locationFlow.collect { location -> println("New Fix: ${location.speed} m/s") if (location.isMock) { Alert.show("Fake GPS detected!") } } // 4. Stop Tracking Anchor.stopTracking()
// 1. Add Circular Geofence Anchor.addGeofence( id = "office_hq", center = AnchorPoint(52.52, 13.40), radius = 200.meters ) // 2. Add Polygon Zone (Complex Shape) Anchor.addGeofence( id = "warehouse_sector_a", points = listOf( AnchorPoint(52.5, 13.4), AnchorPoint(52.6, 13.5), AnchorPoint(52.7, 13.3) ) ) // 3. Listen for Events // Note: Anchor automatically persists geofences and // restores them on device reboot. No need to re-add. Anchor.geofenceFlow.collect { event -> when(event.type) { GeofenceType.ENTER -> notify("Welcome to ${event.regionId}") GeofenceType.EXIT -> logExit(event.regionId) } }
Note: API syntax is currently in draft and subject to refinement before the v1.0 stable release.
Start with the free core. Upgrade when you need the heavy lifting.
For indie apps & raw tracking.
Batteries included for production.
License is perpetual.
Subscription covers updates & support. Keep using the last version forever if you cancel.
Total control and compliance.
Lifetime Source Updates.
Includes 1st year support.
Optional support renewal: €249/yr.
The Anchor Core (Free) version is available now. The Pro/Enterprise features are targeting a stable v1.0 release in February 2026. We are currently in active development and internal testing to ensure rock-solid stability before public launch.
Absolutely. While Anchor is built for Kotlin Multiplatform, it compiles down to a standard Android library (AAR). You can use it in any native Android project to replace legacy location services with our modern, battery-efficient engine.
No limits. You can use Anchor in unlimited applications across unlimited devices. For Pro and Enterprise plans, you simply generate a unique license key for each App ID via your dashboard or by contacting support. We do not charge per-device or per-seat fees.
Fair Usage Policy applies: The license is valid for apps owned or developed by the license holder (you or your company). It cannot be shared, sub-licensed, or used by multiple unrelated entities to avoid purchasing their own licenses.
We believe in sustainable open source. Livotov Labs is an independent, bootstrapped company. We built Anchor because we needed it for our own apps, and we are not funded by VC money.
We offer the Scout plan for free to give back to the community. The Pro license fees allow us to dedicate full-time engineering hours to maintenance, updates, and support - ensuring this library doesn't become abandonware. Your support guarantees Anchor stays robust for the long haul.
This philosophy is why we strictly avoid per-seat or per-app usage fees. Our goal isn't to generate millions for investors, but to earn a fair living that allows us to evolve the project and keep it healthy for the community.
Still have a question? Email us or create an issue on GitHub.
Anchor is currently in active development. v1.0 release is planned Jan 2026. Join the waitlist to be notified when the beta drops and get a 50% Early Bird Discount on Pro licenses.