OpenPromptr

Mirrors a display, a window, or a private virtual display onto a physical teleprompter monitor — rotated and mirrored so it reads correctly through the glass.

Maintained v1.3.0 macOS 13+ MIT licence
The OpenPromptr control panel: a Virtual display source, an AAA 1920×1080 target display, orientation set to 0° with flip horizontal on, and Output running shown in the top corner.
the actual app, not a mockup

How it works

A mirror-glass rig needs one thing: whatever is on the presenter-view window, mirrored and correctly oriented, full-screen on a second physical display. OpenPromptr captures a source with ScreenCaptureKit, applies rotation and mirroring, and shows the result on the target — nothing else runs, and unused screen area stays black.

Source

A single window — simplest, everything else stays usable.

A visible physical display.

A private virtual display, for when the presenter view shouldn't appear anywhere else.

Rotate & mirror

The orientation control cycling through 0°, 90°, 180°, and 270°, with a live preview glyph that flips and rotates to match.
0° / 90° / 180° / 270°, plus independent horizontal and vertical mirroring — live preview included.

Target display

Full-screen output, always on a display separate from the source — so it never covers the thing being captured.

Optional automatic retry after a capture failure, and automatic resume when a disconnected display reappears.


Get it

Notarized, signed builds are on the releases page. The app checks for updates itself once installed.

  1. Download and open the disk image.

    OpenPromptr-v1.3.0-macOS-arm64.dmg — verify against its published checksum if you'd like — then drag OpenPromptr into Applications.

  2. Grant Screen Recording permission.

    System Settings → Privacy & Security → Screen Recording, for OpenPromptr.

  3. Choose a source and a target display, then start output.

    See Operation in the README for the full walkthrough.

Prefer to build it yourself? It's a small SwiftPM project — see building and testing. Release history is in the changelog.


Privacy

OpenPromptr collects nothing and sends nothing.

Captured images are processed locally and shown on a display only — no telemetry, no storage of image content on disk. The only outbound network access is a daily check against this repository's GitHub Releases (can be turned off), used solely to offer app updates. An optional, off-by-default local API (127.0.0.1 only, token-authenticated) lets a script or a Stream Deck control output from outside the app — never reachable from the network. Full detail is in the security policy.

This page behaves the same way: every stylesheet, font, and image is served from this repository, so nothing here loads from a third party, sets a cookie, or records your visit.


Accessibility

Every control is a standard SwiftUI button, toggle, or picker, with standard keyboard focus and an accessibility label. This has not been tested end-to-end with VoiceOver. Full detail is in the README's accessibility note.