Access Apple's Find My network, AirTags, and Apple Devices directly from your Android phone using a lightweight macOS companion bridge and a mobile-optimized Progressive Web App (PWA).
- 📍 Real-time Map: Live tracking of AirTags, MagSafe Wallets, Backpacks, Keys, Bikes, iPhones, MacBooks, Apple Watches, and AirPods.
- 📱 Native Android Experience: Installable PWA with one-touch launch from your Android home screen.
- 🧭 Google Maps Directions: One-tap direct deep link into Google Maps navigation from any AirTag / item.
- 📏 Proximity Distance: Calculates live distance from your Android phone to each item (e.g. "85 m away", "1.2 km away").
- 🔋 Battery & Status: Live battery status percentage indicators, charging status, and accuracy radius.
- 🌐 Tailscale Funnel Ready: Securely accessible anywhere in the world without opening router ports or port-forwarding.
- 🔄 macOS Background Service: Runs silently via
launchdand automatically starts on Mac boot.
npm installCopy the environment template:
cp .env.example .env(Optional) Edit .env to set an AUTH_TOKEN (PIN or secret passphrase) if you'd like to protect your instance over public Tailscale Funnel URLs.
Apple protects ~/Library/Caches/com.apple.findmy.fmipcore/ under macOS Privacy controls.
- Open System Settings > Privacy & Security > Full Disk Access.
- Click the
+icon and add Terminal (or iTerm2 / Node). - Ensure the toggle is turned ON.
- Open the native Find My app on your Mac once so macOS caches your latest items.
npm startOr run the automated setup wizard:
npm run setup:macSince you already have Tailscale Funnel enabled on your MacBook:
- In your MacBook terminal, start Tailscale Funnel on port
3000:tailscale funnel 3000
- Tailscale will provide your public HTTPS URL (e.g.
https://your-macbook.tailscale.net). - Open this URL on your Android phone's browser (Chrome, Firefox, or Brave).
- (Optional) If you configured
AUTH_TOKEN, tap the ⚙️ Settings icon in the top right to enter and save your token once.
- Open your FindMy bridge URL in Google Chrome on Android.
- Tap the Chrome menu (⋮ three dots in top right).
- Tap "Install app" or "Add to Home screen".
- The FindMy radar icon will appear on your Android home screen and open in full-screen standalone mode.
| Endpoint | Method | Description |
|---|---|---|
/api/status |
GET |
Health check, cache status, item counts, uptime |
/api/all |
GET |
All combined items and devices with full coordinates |
/api/items |
GET |
AirTags and 3rd-party Find My items |
/api/devices |
GET |
Apple devices (iPhones, Macs, Watches, AirPods) |
/api/refresh |
POST |
Triggers macOS Find My background sync |
/ws |
WebSocket |
Real-time push stream for live location changes |
┌────────────────────────────────────────────────────────┐
│ MacBook (macOS) │
│ │
│ [Apple Find My App] │
│ │ (writes cache) │
│ ▼ │
│ ~/Library/Caches/com.apple.findmy.fmipcore/ │
│ ├── Items.data (AirTags, Keys, Wallets, etc.) │
│ └── Devices.data (iPhones, Macs, Watches, AirPods) │
│ │ │
│ ▼ (reads & parses) │
│ [FindMy Bridge Service (Node.js + Express + WS)] │
└───────────────────────┬────────────────────────────────┘
│ Tailscale Funnel (HTTPS)
▼
┌────────────────────────────────────────────────────────┐
│ Android Smartphone │
│ │
│ [FindMy Web App / PWA (Leaflet + Google Maps Deep)] │
└────────────────────────────────────────────────────────┘