Roam-Control README

The project's README from github.com/seanhowarthdev/Roam-Control. As one markdown file: README.md.

Roam Control app icon

Roam Control

Choose, test and move an iPhone's reported location from one clean Apple Maps interface.

Public beta: 0.9.0 (Build 29) · Requires: iOS 27+

iOS 27+ SwiftUI Beta 0.9.0 Build 29 PolyForm Noncommercial 1.0.0

Roam Control is a source-available SwiftUI app for location-based development, quality assurance and responsible personal testing on an iPhone you own and control. It supports fixed locations, walking routes, favourites, history, native on-device pairing and LocalDevVPN-compatible sessions.

Screenshots

Roam Control welcome screen Selecting a fixed location in London Active simulated walking route

Welcome · Fixed location · Walking route

Privacy-first anonymous statistics choice Roam Control settings

Private by design · Settings

Highlights

Install the public beta

Roam Control is not distributed through the App Store or TestFlight. Download the IPA attached to the matching GitHub Release and sign it with SideStore using your own Apple account.

You will need:

Read the complete installation guide before installing. Free Apple accounts remain subject to Apple's app-count and seven-day refresh limits.

First-time setup

  1. Install and open Roam Control.
  2. Complete the four-page introduction.
  3. Tap Pair This iPhone on Device Setup.
  4. Open Settings → Privacy & Security → Developer Mode → Pair with Roam Control.
  5. Enter the six-digit code shown in Roam Control.
  6. Install and connect LocalDevVPN.
  7. Choose a location or walking route.

The pairing record is stored in the iPhone Keychain and is never uploaded.

Privacy

Locations, coordinates, searches, favourites, history, walking routes and pairing records stay on the iPhone.

Anonymous usage statistics are optional and off by default. When enabled, a narrow first-party sender reports only a fixed set of activity events, the app version/build and a hashed random installation identifier. It never sends locations, searches, routes, pairing data, device names or diagnostics. No third-party analytics SDK is embedded.

The public project has no live analytics destination or Apple signing team. A checkout therefore sends no statistics unless the builder deliberately supplies a private local configuration.

Read Privacy for the exact event and retention disclosure.

Responsible use

Roam Control is intended for development and testing on a device you own and control. Location simulation can affect every app using the iPhone's reported position. Restore the real location before using navigation, emergency, safety, transport or location-sharing features.

Do not use Roam Control to mislead another person, falsify evidence, access something you are not entitled to use, evade safeguards or breach a third-party service's rules. See Responsible Use.

Build from source

  1. Clone the repository and open RoamControl.xcodeproj in Xcode 27 or newer.
  2. Select the Roam Control target.
  3. Choose your own Apple development team under Signing & Capabilities.
  4. Select a connected iPhone and press Run.

The iPhone simulator is useful for interface work but cannot complete the physical pairing handshake or start a location session.

Normal builds use the included Frameworks/RoamPairingFFI.xcframework. The framework contains arm64 iPhone and Apple Silicon simulator slices. Rebuild it only after changing Native/RoamPairingFFI; instructions are in the build and release guide.

How it works

Roam Control generates or imports an RPPairing record for the same iPhone and stores it in the device-only Keychain. When a location starts, it discovers that iPhone's remote-pairing service through LocalDevVPN, verifies the device identity and opens the encrypted developer session used to set or clear a simulated location.

The native engine is a narrow Rust-to-Swift bridge around the MIT-licensed idevice library, pinned to an exact revision.

Documentation

Community

For casual help, beta discussion and feature ideas, join the Roam Control Discord.

For bugs and reproducible issues, please use GitHub Issues. For security-sensitive reports, use GitHub Security Advisories.

Contributing

Bug reports and focused improvements are welcome. Read CONTRIBUTING.md before opening an issue or pull request, and never upload pairing records, signing material, credentials or private location information.

Licence

Roam Control's current source is available under the PolyForm Noncommercial License 1.0.0. It may be used, modified and redistributed for non-commercial purposes under those terms. Commercial use requires separate permission from the project owner.

Roam Control 0.9.0 Beta 1 was released under the MIT Licence and remains available under those terms. The licence change applies to development after Beta 1 and does not revoke rights already granted for that release.

See Licensing for details. Bundled dependencies retain their own licences; see Third-party notices.

Roam-Control (seanhowarthdev/Roam-Control)

Searching Database…

What is this?Roam Control is a SwiftUI iOS app that lets you choose, test and move your iPhone's reported GPS location for development, QA and responsible personal testing.
Is this a standalone app or something I add to Xcode?It's a self-contained iOS app you install and run on your own iPhone, not a library or Xcode plugin. Its native engine is a Rust-to-Swift bridge around the idevice library that handles the device pairing and location session.
How do I install it since it's not on the App Store?Download the IPA from the matching GitHub Release and sign it with SideStore (or build from source in Xcode) using your own Apple account, then pair it with your iPhone via Developer Mode using a six-digit code shown in the app.
What do I need before I can use it?An iPhone running iOS 27 or newer with Developer Mode enabled, LocalDevVPN installed and connected, and either SideStore or Xcode on a Mac for signing/installing the app.
Any install pitfalls I should know about?Free Apple accounts are limited by Apple's app-count and seven-day refresh rules, and the iPhone simulator can only be used for interface work since it cannot complete the physical pairing handshake or start a real location session.
Does any of my location data leave the phone?No. Locations, searches, favourites, history, routes and pairing records all stay on the device; optional anonymous usage stats are off by default and never include location, search or pairing data.
What can I do with a simulated location besides setting a fixed point?You can preview and start Apple Maps walking routes, then pause, resume, reverse or redirect them mid-session, plus save named favourites and revisit recent locations.
Do I need to jailbreak my iPhone to use this?No, it works on a stock iPhone through sideloading with SideStore (or Xcode) and an on-device pairing handshake over LocalDevVPN, without jailbreaking.
What is LocalDevVPN used for here?Roam Control uses LocalDevVPN to discover the paired iPhone's remote-pairing service and open an encrypted developer session used to set or clear the simulated location.
Can I undo the location change when I'm done testing?Yes, the app lets you explicitly restore the real location when testing is finished, and includes recovery handling if a fixed or walking session gets interrupted.
Size
20.2 MB
Stars
1.1K
Age
1mo
Commits · 90 Days