A native VNC viewer for Apple Vision Pro, built in Swift with SwiftUI.
- Connect to any VNC server on your local network
- Auto-login with saved credentials (supports VNC password and macOS Screen Sharing username/password auth)
- Hardware and Bluetooth keyboard support with full key mapping
- On-screen soft keyboard with modifier keys, function keys, and arrow keys
- Configurable color quality (16-bit or 24-bit)
- Multi-window interface — remote desktop, keyboard, and server list as separate windows
- Saved connections with SwiftData persistence
- Apple Vision Pro or visionOS Simulator
- visionOS 26.0+
- Xcode 26.0+
VisionVNC uses RoyalVNCKit for the VNC protocol implementation.
-
Clone this repository:
git clone https://github.com/Illixion/VisionVNC.git cd VisionVNC -
Clone the RoyalVNCKit dependency:
mkdir -p repos git clone https://github.com/royalapplications/royalvnc.git repos/royalvnc
-
Change the RoyalVNCKit library type to static in
repos/royalvnc/Package.swift:// Change .dynamic to .static .library(name: "RoyalVNCKit", type: .static, targets: ["RoyalVNCKit"]),
-
Open
VisionVNC.xcodeprojin Xcode, then add the localrepos/royalvncpackage:- File → Add Package Dependencies → Add Local → select
repos/royalvnc
- File → Add Package Dependencies → Add Local → select
-
Build and run on Apple Vision Pro or the visionOS Simulator.
The app uses a multi-window SwiftUI architecture:
- Connection List — Main window for managing saved VNC servers
- Remote Desktop — Displays the remote framebuffer with gesture-based mouse input
- Keyboard — Separate window with soft keyboard controls for modifier keys, special keys, and text input
VNCConnectionManager is the central bridge between RoyalVNCKit and SwiftUI, using @Observable for reactive state updates and CADisplayLink for throttled framebuffer rendering.
Contributions are welcome! Please feel free to submit a pull request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -am 'Add my feature') - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
This project uses RoyalVNCKit by Royal Apps, licensed under the MIT License. See the in-app Third-Party Notices for full license text.
This project is licensed under the MIT License — see LICENSE.txt for details.