🖥️🤝🖥️ LAN-Based macOS Screen Share — Easy Install via DMG
iCollab is a lightweight, high-performance macOS screen-sharing application built with SwiftUI, ScreenCaptureKit, and Network.framework. It allows users to host a screen-sharing session over either a LAN-based connection (Local Area Network) or a connection regarding 6-digit session codes.
- macOS 13.0 (Ventura) or Newer
- Apple Silicon (arm64) — Native, Optimized Performance
- Intel (x86_64) — Full Support
- Both Architectures are Automatically Built & Available as Separate DMG Installers.
- Real-time Screen Sharing: Leverages Apple's
ScreenCaptureKitfor low-latency, high-quality display capture. - TCP Streaming: Uses
Network.frameworkfor reliable frame delivery between host and client. - Zero-Config Discovery: Generate easy-to-read session codes based on local IP addresses.
- Secure & Logged: Integrated session logging via
PersistenceManagerto track host activity. - Sandboxed: Built with macOS security best practices using App Sandbox and Hardened Runtime.
- Domain: Native macOS Systems Programming/Real-Time Networking
- Uniqueness: High (Prototype Distributed Desktop Architecture)
iCollab/
│── README.md → Documentation & Information
│── LICENSE.md → License pertaining to Copyright Information revolving this project/repository.
│── Info.plist → Information Property List; File that Manifests & Communication with macOS on how to Handle the Application. (Required Permissions & Identity)
│── iCollab.entitlements → Communicates with macOS Kernel to Allow for Access & Utilization of Certain Restricted Resources.
│── Package.swift → Instruct SPM (Swift Package Manager) how to Build, Organize, & Distribute Code.
│── .gitignore → Responsible for Instructing GitHub Ignore Certain Files.
│── /Sources
│ ├── App.swift → Defines Primary Strucutre & Entry Point for Application.
│ ├── CaptureEngine.swift → SCKit Logic for Display Frame Capture & JPEG Encoding.
│ ├── ContentView.swift → Main SwiftUI Interface & UI State Management.
│ ├── NetworkManager.swift → TCP Socket Handling (Listener for Host, Connection for Client).
│ ├── PersistenceManager.swift → Thread-safe Logging of Session Data to Disk.
│ └── SessionManager.swift → IP Address Retrieval & Session Code Generation.
- macOS 13.0 (Ventura) or newer
- macOS 13.0 (Ventura) or newer
- Swift 5.9+ (installed via Command Line Tools)
- Download the DMG installer from Releases
- Open the DMG and drag
iCollab.appto Applications - Remove quarantine attribute (if Gatekeeper blocks it):
xattr -d com.apple.quarantine /Applications/iCollab.app- Launch from Applications or Spotlight
- Clone the repository:
git clone https://github.com/aparikh1/iCollab.git
cd iCollab- Build the project:
swift build -c release- Remove quarantine attribute (optional):
xattr -d com.apple.quarantine .build/release/iCollab- Run:
./.build/release/iCollab- Launch
iCollabfrom Applications - Click Host Session
- Permissions: Allow Screen Recording when prompted
- Share the Session Code or Local IP with the client
- Launch
iCollabon a second machine - Enter the Host's IP address in the text field
- Click Join Session
If macOS blocks the app as "damaged" or "unverified":
xattr -d com.apple.quarantine /Applications/iCollab.appIf the client connects but only sees a black screen, ensure the Host has granted Screen Recording permissions. You may need to restart the app after toggling this setting in macOS System Settings.
Ensure the macOS Firewall is not blocking incoming connections on port 8080.
Distributed under the MIT License. See LICENSE.md for more information.