A local-first network monitor and firewall. Flynn logs every connection a device makes, lets you investigate them in an explorer, and blocks or allows by app, domain, IP or port. Nothing leaves the device by default.
Status: early development. iOS and iPadOS come first, then Android on the same core, then desktop. See docs/Flynn-plan.md for the product plan and docs/development-plan.md for the build order.
Flynn aims to log everything, but no app can see everything, and Flynn says so rather than implying otherwise.
| Layer | What Flynn sees | What Flynn can do |
|---|---|---|
| App traffic through the tunnel | App (on supervised iOS devices and Android), domain, IP, port, bytes, timing | Allow, block |
| App traffic that goes around the tunnel | That it happened and how much, not where it went | Flag it; force traffic through the tunnel |
| Traffic the OS never gives any app (DHCP, captive portal sign-in, VoLTE, calls, SMS, paired-watch traffic) | Not the traffic, only the event and the reason | Record it in the gap log |
| Bluetooth, NFC, Wi-Fi Direct | Connection events where the platform exposes them | Log and alert; point to the system setting that stops it |
Whatever Flynn cannot block, it logs. Where it cannot log the traffic, it logs the gap.
core/ Rust workspace: parsers, rules, data plane, store, enrichment, FFI, host harness
apple/ iOS and iPadOS app and Network Extensions (Xcode project generated by XcodeGen)
android/ reserved for Phase 2
scripts/ build and check scripts
data/ source lists compiled into bundled lookup tables
docs/ plans, spike results, device checklists
Requirements: Xcode 26 or newer, rustup, XcodeGen (brew install xcodegen).
scripts/bootstrap.shThat installs the Rust targets, builds the core as an XCFramework, generates the Swift and Kotlin bindings and generates apple/Flynn.xcodeproj. To run every check:
scripts/check.shNetwork Extensions do not run in the iOS Simulator. The app runs there against a mock capture source; capture itself needs a real device and an Apple Developer Program team.