Open-source macOS file manager for Meta Quest VR headsets.
QuestSync is a free, native macOS application for browsing, managing, and transferring files to and from Meta Quest 3 VR headsets. No more buggy Android File Transfer. No more paid third-party apps. Just plug in and go.
If you own a Meta Quest on macOS, you've probably experienced:
- Android File Transfer crashing, freezing, or refusing to detect your headset
- Paid apps charging $10-20 for basic file transfer functionality
- Command-line ADB working but being unusable for most people
- Multi-gigabyte VR files (360 videos, game mods, sideloaded APKs) timing out or corrupting mid-transfer
QuestSync fixes all of this with a clean, native macOS app built from scratch.
- Native ADB protocol implementation in pure Swift (no external
adbbinary required) - USB device detection via IOKit
- RSA authentication with automatic key management
- Connection state machine with full handshake support
- Three-panel file manager — sidebar, file browser, transfer queue
- Drag-and-drop transfers — drag files between your Mac and Quest
- Batch operations — multi-file transfers with queue management
- APK installation — one-click sideloading with status reporting
- Large file support — chunked streaming that handles multi-GB files without memory issues
- Transfer queue — pause, resume, cancel, retry with progress tracking
- Developer Mode wizard — step-by-step guided setup for non-technical users
- Bookmarks — pin frequently used Quest directories
- macOS notifications — know when transfers complete, even when minimized
- Wireless ADB transfers over Wi-Fi
- Quest companion app (no Developer Mode required)
- iOS companion app
- Video and 3D model previews
- CLI tool for scripting and automation
Coming soon — the app is in early development (Phase 1: Foundation).
- macOS 13 (Ventura) or later
- Meta Quest 3 (Quest 2, Quest Pro, and Quest 3S expected to work but untested)
- Developer Mode enabled on your Quest (setup guide)
- USB-C cable connecting your Mac to your Quest
Releases are not yet available. Once v1.0 is ready:
Option 1: Direct Download
Download the latest .dmg from GitHub Releases.
Option 2: Homebrew
brew install --cask questsync# Clone the repository
git clone https://github.com/ishanperera/questsync.git
cd questsync
# Build the core library
make build
# Run tests
make testTo build the full macOS app, open the Xcode project:
- Open
QuestSync/QuestSync.xcodeprojin Xcode - Select your signing team in project settings
- Build and Run (Cmd+R)
QuestSync communicates with your Quest using ADB (Android Debug Bridge), which requires Developer Mode. Here's how to enable it:
- Go to the Meta Developer Portal
- Log in with your Meta account
- Accept the developer terms (it's free, no payment required)
- Open the Meta Horizon app on your phone
- Tap Devices and select your Quest headset
- Tap Headset Settings
- Find Developer Mode and toggle it ON
- Hold the power button on your Quest
- Select Restart
- Wait for it to boot up
- Connect your Quest to your Mac with a USB-C cable
- Put on your Quest headset
- You'll see a prompt: "Allow USB debugging?"
- Check "Always allow from this computer"
- Tap Allow
That's it! QuestSync will now be able to communicate with your Quest.
QuestSync is built as two layers:
┌─────────────────────────────────────────┐
│ QuestSync.app │
│ (SwiftUI macOS App) │
│ │
│ Sidebar │ File Browser │ Transfer Queue│
└─────────────────┬────────────────────────┘
│
┌─────────────────▼────────────────────────┐
│ QuestSyncKit │
│ (Swift Package Library) │
│ │
│ ADB Protocol │ Transfer │ Device Mgr │
│ - Auth │ Engine │ - USB (IOKit)│
│ - Shell │ - Queue │ - Detection │
│ - Sync │ - Stream │ - Status │
└──────────────────────────────────────────┘
QuestSyncKit is a standalone Swift Package with zero UI dependencies. It implements the ADB protocol natively in Swift — no external adb binary, no shelling out, no dependencies. This means:
- Zero setup — no need to install Android Platform Tools
- Full control — we handle USB detection, authentication, and file transfer directly
- Portable — the library can be used by other apps, a CLI tool, or ported to other platforms
| Decision | Rationale |
|---|---|
| Native Swift ADB client | No external dependencies, best UX, full control over the protocol |
| IOKit for USB | Direct USB access on macOS, handles device detection and bulk I/O |
| SwiftUI | Modern macOS UI framework, less code, native look and feel |
| Swift Package Manager | Clean dependency management, easy for contributors to build |
| Transport protocol abstraction | USB today, TCP/Wi-Fi tomorrow — same protocol layer |
| Device | Status |
|---|---|
| Meta Quest 3 | Supported (primary target) |
| Meta Quest 3S | Expected to work (untested) |
| Meta Quest Pro | Expected to work (untested) |
| Meta Quest 2 | Expected to work (untested) |
| Non-Meta Android | Not supported |
All Meta Quest devices share the same USB vendor ID (0x2833) and ADB protocol, so compatibility is expected across the lineup. If you test with a device not listed above, please open an issue to let us know!
See ROADMAP.md for the full development plan.
| Phase | Focus | Status |
|---|---|---|
| 1. Foundation | ADB protocol, USB detection, authentication | In Progress |
| 2. File Operations | Browse, push, pull files via ADB sync | Planned |
| 3. Transfer Engine | Queue, progress, retry, batch transfers | Planned |
| 4. Basic GUI | Three-panel file manager with drag-and-drop | Planned |
| 5. Onboarding | Developer Mode wizard, setup flow | Planned |
| 6. Power Features | APK install, bookmarks, thumbnails, menu bar | Planned |
| 7. Release | README, CI/CD, DMG packaging, Homebrew | Planned |
Contributions are welcome! QuestSync is a solo-led project, but PRs from the community are appreciated.
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Build and test (
make build && make test) - Commit your changes
- Open a Pull Request
Look for issues labeled good first issue — these are scoped, well-documented tasks designed for new contributors.
- Xcode 15+ (for SwiftUI and macOS 13 SDK)
- Swift 5.9+
- A Meta Quest headset (for integration testing — unit tests work without hardware)
questsync/
├── QuestSyncKit/ # Core library (Swift Package)
│ ├── Sources/
│ │ └── QuestSyncKit/
│ │ ├── ADB/ # ADB protocol implementation
│ │ ├── Transport/ # USB and network transport layers
│ │ └── Device/ # Device detection and management
│ └── Tests/
├── QuestSync/ # macOS SwiftUI application
├── docs/ # Architecture and protocol documentation
└── Makefile # Build shortcuts
QuestSync collects no telemetry, analytics, or user data. All file transfers occur directly between your Mac and your Quest over USB — nothing passes through external servers. Ever.
MIT License — see LICENSE for details.
- The Android ADB protocol documentation for making this possible
- The Meta Quest community for testing and feedback
- Everyone frustrated with Android File Transfer — you inspired this project