Know when to open your windows.
OpenAir is an iOS 26 SwiftUI app that recommends when outdoor temperature, dew point, rain, and wind are suitable for opening windows.
- Window open/close recommendations based on outdoor conditions.
- Dew point aware comfort checks.
- Rain and wind safety checks.
- Local alerts when conditions change.
- Demo weather mode for unsigned simulator builds.
- Xcode 26
- iOS 26 simulator or device
- Apple Developer account with WeatherKit enabled
- Bundle ID:
com.openairapp.openair
- Open
OpenAir.xcodeproj. - Select a development team for the
OpenAirtarget. - Enable WeatherKit for the bundle ID
com.openairapp.openairin the Apple Developer portal. - Build on an iOS 26 simulator or device.
Unsigned simulator builds can use Use Demo Weather when WeatherKit authentication is unavailable.
To manually trigger the BGAppRefreshTask handler while the app is running from Xcode, paste this into the LLDB console:
(lldb) e -l objc -- (void)[[BGTaskScheduler sharedScheduler] _simulateLaunchForTaskWithIdentifier:@"com.openairapp.openair.refresh"]
This tests the registered background refresh handler only. It does not prove iOS will run background refresh on a predictable schedule.
OpenAir considers:
- Outdoor temperature
- Dew point
- Rain
- Wind speed
- Current window state
The recommendation engine is deterministic and covered by unit tests.
Domain: weather models and the deterministic recommendation engine.Services: WeatherKit, Core Location, MapKit, notification, and cache adapters.Features: onboarding, dashboard, schedule, hour detail, and settings.OpenAirTests: recommendation boundaries, windows, notification transitions, persistence, and location fallback behavior.
Contributions are welcome.
Good first contributions include bug fixes, UI polish, accessibility improvements, documentation updates, and recommendation logic tests.
Before opening a large pull request, please start a GitHub issue to discuss the change.
OpenAir uses location to fetch local weather conditions. Alerts are local and best-effort. iOS can delay or skip background refreshes. Weather and location data are used only for the app's window-opening recommendations.



