Offline-first · No accounts · No signal required

Cairn

A fully offline topo, satellite, and trail map, for when you're past the last bar of signal and still need to know where you are.

works entirely offline · no account · no analytics
Why it exists

Most map apps assume you're connected.

The moment you're not, deep in a canyon, above treeline, three ridgelines from the truck, they stop being useful right when it matters most. A cached tile here and there isn't the same as actually planning to lose signal.

Download the terrain before you go. Everything keeps working with the phone in airplane mode.

Satellite imagery, topo contours, trail data, even a weather radar loop: all of it lives on the device, not a server somewhere waiting for a request that'll never arrive out there. You choose what to bring with you, the same way you'd choose which map to fold into your pack.

It's built by one person, for real trips, tested by deliberately turning the signal off and seeing what broke.

What's inside

Everything a paper map does. Plus everything it can't.

Truly offline maps

Download any region (satellite, topo, and trail layers) before you lose signal. Cached on the device, not fetched on demand.

Full layer control

Stack satellite, topo, trails, public land ownership, weather radar, borders, and street labels in any order, each with its own transparency.

Flags with real meaning

Water, shelter, campfire, hazard, cache, and more: a dozen icon types instead of one generic pin. Full undo/redo on every drop.

Route planning

Plan a route point by point before you go, or connect flags you've already dropped. Undo and redo the whole way through.

Track recording

Record where you've actually been, live distance and time, and keep it, all without a phone signal in sight.

Public land ownership

BLM's own official Surface Management Agency data. Know what's public land before you're standing on it.

Weather radar playback

Step or play through the last two hours of radar directly on the map, with an accurate reflectivity legend.

No account, no tracking

Nothing to sign up for, no analytics running. Your flags and routes never leave the phone unless you choose to back them up.

The name

What does "Cairn" mean?

A cairn is a stack of stones people build by hand to mark a path where there isn't an official trail: above treeline, across open desert, along a ridge with no blazes. You find the last one, you look for the next one, and that's how you know you're still going the right way.

That's the whole idea of this app: something you can rely on to mark your way when there's nothing else out there to rely on.

Who it's for

Who is this actually for?

Hikers, hunters, climbers, and anyone else who spends real time somewhere without signal and wants a map that doesn't quietly depend on having one. It's also for anyone who'd rather not hand a mapping app an account, a login, or a stream of location data just to see where they are.

It's not trying to replace a dedicated GPS unit for search-and-rescue-grade navigation. It's a phone app, treat it like one. Bring a paper map and a compass for anything truly remote.

How it's built

Built and compiled entirely on a phone. No laptop involved.

Every layer, every icon, every bug fix, written and built directly on an Android phone, no desktop in the loop at any point.

If you're curious how deep that rabbit hole goes, or want to build it yourself, the full source is public on GitHub.

View source on GitHub
pkg install nodejs openjdk-17
npx cap sync android
./gradlew assembleDebug
BUILD SUCCESSFUL
app-debug.apk
Installation

Android will warn you. Here's why, and what to tap.

Any app installed outside the Play Store triggers this same warning. It's Android protecting you from unverified sources in general, not a flag specific to Cairn.

  1. 1
    Download the APK using the button below. It'll land in your Downloads folder like any other file.
  2. 2
    Tap the downloaded file. Android will show a screen saying it can't verify the app, or that installing unknown apps is restricted.
  3. 3
    Tap "Settings" on that warning screen (wording varies slightly by Android version: sometimes "More details," sometimes it links straight to a permission toggle).
  4. 4
    Turn on "Allow from this source" for the app you used to open the file (usually your file manager or browser).
  5. 5
    Go back and tap the file again. A second check, Google Play Protect, may also show up saying "App blocked to protect your device" because it hasn't seen an app from this developer before. Tap "Install anyway" if you see that, then "Got it."
  6. 6
    You'll now get the normal Android install screen. Tap Install.

Updating later works the same way: download the new APK, tap it, install over the old version. Your data isn't affected by updating.

Safe & auditable

"Trust me" isn't good enough. So don't.

Every line of code that runs on your phone is public on GitHub, not a summary of it, not a privacy policy describing it, the actual source. You don't have to take a claim about privacy on faith; you or anyone else can read exactly what the app does and confirm it for yourself.

No account system. No analytics SDK. No ad network. Nothing phoning home except the map tile and weather providers you'd expect a map app to talk to.

The permissions it asks for are the ones you'd expect and nothing more: location (to show where you are), and storage (to cache map tiles and back up your data). It doesn't request contacts, camera, microphone, or anything unrelated to being a map.

Because it's open source, anyone can also build it from source themselves instead of trusting the pre-built APK at all. The build instructions are in the GitHub README.

You will likely see a Google Play Protect warning during install that says it hasn't seen an app from this developer before. That's exactly what it means, and nothing more: this is a small independent project, not a company with an established reputation in Google's system yet. It is not a virus scan result and it is not a claim about the code itself, just a "no prior history" flag that any brand new sideloaded app from any small developer triggers the first time.

Your data

Where does everything actually live?

Flags, routes, tracks, and sessions are stored in the app's local database on your phone, not on a server, because there isn't one. Downloaded map tiles are cached the same way.

From Settings, you can set up a backup folder (Documents/Cairn) and export everything, except the map tiles themselves, which stay in the app's cache and can always be re-downloaded, to a plain file you can move to a new phone or keep as a backup.

Uninstalling the app deletes all of it, the same as any other app. There's no cloud copy sitting somewhere after you remove it, because it was never sent anywhere to begin with.

Terms of use

The plain-language version, then the actual terms.

This is a free, independently-built tool. Use it, but don't assume it's infallible, the same way you wouldn't stake a life-or-death decision on a single paper map without cross-checking it.

No warranty. Cairn is provided "as is," with no guarantee it's accurate, available, or free of bugs. Map data, weather radar, and land ownership boundaries come from third-party sources and can be outdated, incomplete, or wrong.

Not a substitute for judgment. Don't rely on this app as your only means of navigation, especially in remote or hazardous terrain. Carry a paper map and compass, tell someone your plans, and use your own judgment above anything shown on screen.

Zero liability. To the fullest extent permitted by law, the developer accepts no liability for any injury, loss, or damage arising from use of this app, including from inaccurate map data, GPS error, or software defects. You use it entirely at your own risk.

Open source license. The code itself is provided under the MIT License (see the GitHub repo), permissive, with its own standard no-warranty terms.

Get Cairn

Sideloaded, not stored.

Cairn isn't on the Play Store, because that would mean handing some of this data to Google too. Download the APK directly and install it yourself.

Android will ask for a one-time permission to install this. See the full walkthrough above if it's your first time sideloading an app.