Skip to content

StevenACZ/mirador

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mirador app icon

Mirador

Local-first Mac viewing and control for iPhone/iPad.

Latest release Platform License

Mirador is a private, LAN-only Apple remote viewing app: a macOS host and an iPhone/iPad client that connect through Bonjour and Network.framework QUIC. It is built for smooth local streaming, trusted pairing, full-screen control, keyboard entry, and client-controlled system audio, without a cloud relay.

The latest stable release is v1.1.0. Cloud relay, VPN mode, Android, Windows, Linux, and internet mode are intentionally out of scope.

Current State

  • Host: macOS on Apple Silicon, advertised as Mirador Host over _mirador._udp.
  • Client: iPhone/iPad SwiftUI app with Bonjour browsing, pairing, trusted reconnects, listener-off states, and full-screen control.
  • Protocol: QUIC with protocol version 7 and ALPN mirador/7.
  • Video: ScreenCaptureKit frames encoded with VideoToolbox H.264/HEVC, sent over QUIC datagrams when usable and reliable QUIC streams when datagrams are not available.
  • Audio: host system audio starts after the first video frame, streams as PCM Float32 over local QUIC, and plays on the iPhone/iPad client.
  • Pairing: new clients show a 6-digit code; the host approves it once and persists the trusted device for future local reconnects.
  • Control: pointer, click, drag, scroll, display switching, zoom crop, keyboard, and audio mute are active only in the full-screen viewer and remain gated by host Accessibility permission where remote input requires it.
  • Viewing: fitted full-source mode preserves aspect ratio; manual zoom fills the iPhone/iPad surface and previews pinch/pan locally before committing stream crop updates.
  • Keyboard: the viewer keeps the latest remote pointer/click anchor visible above the iOS keyboard with local presentation offsets, without changing the remote crop.
  • Full-screen chrome: controls can collapse into a compact persistent keyboard/audio handle with haptic feedback when hiding the expanded bar.

Install

Download the macOS host DMG from the GitHub release, open it, and drag Mirador Host.app to Applications. The host stays idle until a compatible local client connects.

The iPhone/iPad client is currently built and installed through Xcode or the local device script:

./scripts/install_ios_device.sh

The script auto-detects a connected iPhone/iPad and the local Apple Development team when possible. Use DEVICE_ID, MIRADOR_SIGN_IDENTITY, or MIRADOR_DEVELOPMENT_TEAM only when auto-detection is not enough.

Run And Verify

Run the macOS host for development:

./scripts/build_and_run.sh

Install the stable host app path used for real iPhone/iPad testing:

./scripts/install_host_app.sh --launch --auto-start-listener

Recommended checks before publishing:

swift build
swift test
xcodebuild -project Mirador.xcodeproj -scheme MiradorHostApp -destination 'platform=macOS' -derivedDataPath .build/xcode-macos-app build
xcodebuild -project Mirador.xcodeproj -scheme MiradorClientApp -destination 'generic/platform=iOS' -derivedDataPath .build/xcode-ios-app CODE_SIGNING_ALLOWED=NO build
git status --short --ignored

Useful live diagnostics:

./scripts/stream_live_logs.sh --client-console
./scripts/stream_zoom_logs.sh
./scripts/stream_keyboard_logs.sh
./scripts/smoke_connectivity_zoom.sh

Package The Host

Create the release DMG:

./scripts/package_host_dmg.sh

The DMG is written to ~/Downloads/Mirador-<version>.dmg by default. It contains only the signed macOS host app and the Applications drop link. Build products, device logs, smoke logs, DerivedData, local notes, and signing data stay ignored and are not packaged.

Repo Layout

  • MiradorCore: shared protocol, stream settings, transport metadata, diagnostics, datagram codecs, and remote input contracts.
  • MiradorHost: Bonjour advertising, QUIC sessions, ScreenCaptureKit capture, VideoToolbox encoding, system audio, remote input, and host dashboard.
  • MiradorClient: Bonjour browser, pairing, QUIC client session, video rendering, stream controls, retry flow, keyboard handling, and full-screen control surface.
  • Apps/: installable macOS and iOS app wrappers.
  • Tests/: protocol, transport, remote input, settings, viewport, and local QUIC identity coverage.

Public Safety

Do not commit private LAN IPs, Wi-Fi names, real device names, screenshots, signing team IDs, UDIDs, pairing secrets, logs, or local planning notes.

Docs/, AGENTS.md, .codex/, CLAUDE.md, cloud.md, clavo.md, xcuserdata/, build products, DMGs, archives, and logs are intentionally ignored.

License

MIT

About

🪞 Visualiza y controla tu Mac desde iPhone/iPad — local-first, LAN-only y sin cloud

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors