./scripts/build-app.sh
open "build/JoyArk Host.app"
The script builds the source on your Mac and creates a locally signed app. This is a source download, not a prebuilt notarized installer. Keep the resulting app in a stable location; you can open the same app for later sessions without rebuilding it.
Pair and play
Open JoyArk Host and allow Screen Recording in macOS System Settings. Quit and reopen the host if macOS requests it.
For remote controls, also allow Accessibility and enable Allow keyboard and mouse control. Video can be used without Accessibility permission.
Select a display and click Start Host. Wait for Ready for iPhone.
Open JoyArk on your iPhone and allow Local Network access. Select your Mac in Nearby Macs.
Compare the six-digit code on both devices, then click Allow iPhone on the Mac only if they match.
Start your game on the Mac, keep its window focused, and tap Start streaming on the iPhone.
The entire selected display is shared. Close private windows and notifications first. Use touch controls or a controller connected to your iPhone. The host sends keyboard and mouse input; it does not create a virtual gamepad on the Mac.
For later sessions
Open JoyArk Host, click Start Host, then choose your Mac under Saved Macs on the iPhone. No cloud deployment or relay is needed. Stopping a stream leaves the game running on your Mac; quitting the host stops its network service.
Troubleshooting
Mac not found: keep it awake, use the same normal network, avoid guest Wi-Fi, and allow incoming host connections through the Mac firewall. Do not forward ports through your router.
Black video: check Screen Recording permission and restart the host. Protected content may not be capturable.
No controls: check Accessibility permission, enable controls in the host, focus the game, and match its keyboard mapping to JoyArk’s Controller Mapping page.
Stuttering: try Ethernet for the Mac, move closer to the router, or choose 720p at 30 FPS and a lower bitrate.
Pairing stopped working: forget the saved Mac and pair again if its key was replaced.