How blueturboguy07/ghost-location works
Ghost is an Electron desktop app for choosing a location or road route and explicitly applying it to an iPhone or Android phone over USB or Wi-Fi. The main flow runs from the renderer’s map, search, and route controls through the desktop controller to a platform adapter, which issues device commands; the controller also manages sessions and recovery. The README documents setup, saved places, reconnection, restore, and telemetry. Some renderer-to-desktop wiring and unsampled subsystem details are not shown, so those links are omitted or marked unverified.
Main entry points: controller.mjs Session controller · main.mjs Electron host · main.js Map and controls · android.mjs Android adapter
Components 21
Location experience
- Map and controls
src/main.js - Map tiles
- Place search
backend/geocoder.mjs - Road routing
backend/routing.mjs
Desktop coordination
- Session controller
backend/controller.mjs - Electron host
electron/main.mjs - Device setup
src/main.js - Session recovery
backend/controller.mjs
Phone adapters
- iPhone adapter
backend/ios.mjs - iOS sidecar
sidecar/ios_bridge.py - Android adapter
backend/android.mjs - Android phone tools
resources/android
State and integrations
- Saved places
backend/store.mjs - Input validation
backend/validation.mjs - Process runner
backend/process.mjs - Network discovery
backend/network.mjs - Usage telemetry
electron/publik-telemetry.cjs
Other components
- User
- OSRM service
- Photon service
- Selected phone
Connections 24
- User → Map and controls: chooses location
README.md - Map and controls → Map tiles: displays tiles
src/main.js - Map and controls → Place search: searches places
- Place search → Photon service: queries
backend/geocoder.mjs - Map and controls → Road routing: plans route
- Road routing → OSRM service: requests road route
backend/routing.mjs - Map and controls → Session controller: requests device action
- Electron host → Session controller: creates controller
electron/main.mjs - Electron host → Saved places: loads state
electron/main.mjs - Electron host → iPhone adapter: creates adapter
electron/main.mjs - Electron host → Android adapter: creates adapter
electron/main.mjs - Electron host → Network discovery: uses discovery
electron/main.mjs - Session controller → Input validation: validates inputs
backend/controller.mjs - Session controller → Road routing: plans playback
backend/controller.mjs - Session controller → Session recovery: manages sessions
README.md - Session controller → iPhone adapter: controls iPhone
- Session controller → Android adapter: controls Android
- iPhone adapter → iOS sidecar: sends commands
- Android adapter → Process runner: runs device tools
backend/android.mjs - iPhone adapter → Selected phone: simulates location
- Android adapter → Selected phone: simulates location
- Android adapter → Android phone tools: uses helper runtime
- User → Device setup: configures devices
README.md - Electron host → Usage telemetry: starts telemetry
electron/main.mjs