
The simulator reaches Buoy Desktop at localhost. A physical iPhone or iPad needs your computer's LAN address and two Info.plist changes.
The quickest way is a BUOY_SOCKET_URL environment variable in your Run scheme. Set it to the address alone (192.168.1.20) or a full URL (http://192.168.1.20:42831). Buoy uses it only when socketURL is left at its default.
To set it in code instead, do so before calling Buoy.start:
var config = BuoyConfig()
config.licenseKey = ProcessInfo.processInfo.environment["BUOY_LICENSE_KEY"]
if let brokerURL = URL(string: "http://192.168.1.20:42831") {
config.socketURL = brokerURL
}
Buoy.start(config)
var config = BuoyConfig()
config.licenseKey = ProcessInfo.processInfo.environment["BUOY_LICENSE_KEY"]
if let brokerURL = URL(string: "http://192.168.1.20:42831") {
config.socketURL = brokerURL
}
Buoy.start(config)
Replace the example IP address with your computer's address, and keep your app's startup guard around this code.
Merge these entries into your app's Info.plist, keeping any transport-security configuration you already have:
<key>NSLocalNetworkUsageDescription</key>
<string>Connects to the Buoy desktop dashboard for debugging.</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>192.168.0.0/16</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
<key>NSLocalNetworkUsageDescription</key>
<string>Connects to the Buoy desktop dashboard for debugging.</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsLocalNetworking</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>192.168.0.0/16</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Since iOS 17, NSAllowsLocalNetworking alone no longer allows plain HTTP to a bare IP address, so the address also needs an NSExceptionDomains entry. Use the range that contains your computer's address (for example 10.0.0.0/8) or the exact IP. CIDR keys require iOS 17; on iOS 16, list the exact IP.
Limit these entries to the builds that include Buoy, for example with a separate Info.plist per build configuration.
On a physical device, Buoy.start prints a [Buoy] setup: line to the Xcode console when the URL still points at localhost or one of these entries is missing.
Allow local-network access when iOS asks, and make sure the device can reach the computer's broker port. These entries do not open a firewall. If the connection fails, check the connection error in the console.
Use a trusted development network. Account validation makes external requests, and device sessions cross your LAN.