How guardianproject/orbot-apple works
Orbot is an iOS/macOS app that routes device traffic through Tor via a Network Extension. The main workflow is user control in the app, VPN lifecycle/configuration, then tunnel-side Tor startup and traffic handling. Separate product branches configure bridges, onion-service authentication, node selection, content blocking, and kindness mode; shared utilities and IPC support the app. The excerpts show UI-to-manager and tunnel-to-Tor relationships, while some extension wiring and unsampled capabilities are supported only by README statements or the source index.
Main entry points: VpnManager.swift VPN manager · MainViewController.swift Main control · BridgesViewController.swift Bridge setup · BasePTProvider.swift Tunnel provider
Components 23
App experience
- Main control
Orbot/MainViewController.swift - macOS control
Orbot Mac/MainViewController.swift - Kindness mode
Orbot/KindnessModeViewController.swift - Remote control
Orbot/RemoteControl.swift
Tor configuration
- Settings
Orbot/SettingsViewController.swift - Bridge setup
Orbot/BridgesViewController.swift - Custom bridges
Orbot/CustomBridgesViewController.swift - Onion auth
Orbot/AuthViewController.swift - Exit selection
Orbot/ChangeExitViewController.swift - Blocker settings
Orbot/ContentBlocker/ContentBlockerViewController.swift - Blocker rules
Orbot/ContentBlocker/BlockerViewController.swift - Rule storage
Orbot/ContentBlocker/BlockList.swift
VPN runtime
- VPN manager
Shared/VpnManager.swift - Tunnel provider
Shared/Tunnel/BasePTProvider.swift - Tor runtime
Shared/TorManager.swift
Shared services
- Tor settings
Shared/Settings.swift - Control utilities
Shared/SharedUtils.swift - Tunnel messages
Shared/Messages/Message.swift - Logging
Shared/Logger.swift
Other components
- Device user
- Other apps
- Tor framework
- Network Extension
Connections 24
- Device user → Main control: controls
- Main control → Control utilities: requests control
Orbot/MainViewController.swift - Control utilities → VPN manager: connects or disconnects
Shared/SharedUtils.swift - VPN manager → Network Extension: manages tunnel
- Network Extension → Tunnel provider: dispatches to
- Tunnel provider → Tor runtime: starts and controls
Shared/Tunnel/BasePTProvider.swift - Tor runtime → Tor framework: runs Tor
Shared/TorManager.swift - macOS control → VPN manager: controls
Orbot Mac/MainViewController.swift - Device user → Settings: edits configuration
- Device user → Bridge setup: chooses bridges
- Bridge setup → Custom bridges: opens
Orbot/BridgesViewController.swift - Bridge setup → Tor settings: saves bridge options
Orbot/BridgesViewController.swift - Device user → Onion auth: adds service keys
- Device user → Exit selection: selects exit nodes
- Device user → Blocker settings: configures blocking
- Blocker settings → Blocker rules: opens rule editor
Orbot/ContentBlocker/ContentBlockerViewController.swift - Blocker rules → Rule storage: updates rules
Orbot/ContentBlocker/BlockerViewController.swift - Device user → Kindness mode: enables proxy mode
- Other apps → Remote control: sends app links
- Remote control → Main control: routes app actions
- VPN manager → Tunnel messages: handles status messages
Shared/VpnManager.swift - Tunnel provider → Tunnel messages: exchanges messages
Shared/Tunnel/BasePTProvider.swift - Tor runtime → Logging: logs runtime
Shared/TorManager.swift - Main control → VPN manager: observes status
Orbot/MainViewController.swift