Skip to content

Repository files navigation

Teleprompter Studio

A native iOS/iPadOS teleprompter and camera studio for creators — write or paste a script, read it as smoothly scrolling rich text (color, bold/italic, LaTeX math) overlaid on a live camera preview, and either record the take in-app or run prompt-only while filming with another camera.

Built entirely in Swift/SwiftUI as a SwiftPM package compiled with xtoolwithout Xcode, without a Mac, and without a local Swift toolchain. See BUILD_NOTES.md for the full story of how that worked and the tradeoffs it forced.

Features

  • Rich-text teleprompter rendered in a WKWebView for pixel-identical, GPU-smooth scrolling — supports bold/italic/underline/color/highlight and LaTeX math via bundled, offline KaTeX (no CDN, no network dependency).
  • Two run modes: Record (the app is the camera and records the take) or Prompt-only (just the reader, for filming with a separate camera/app).
  • Real Cinematic capture on supported hardware (iPhone 13+, iOS 26+) via AVCaptureDeviceInput's Cinematic Video API, reached safely at runtime via selector/KVC probing so the project still builds on SDKs that don't expose those symbols yet.
  • Synthetic cinematic fallback everywhere else: live Vision person segmentation + Core Image background blur, composited frame-by-frame and recorded with AVAssetWriter.
  • Director/Companion sync — mirror the prompter and a live camera preview to a second iPhone/iPad over the same Wi-Fi with MultipeerConnectivity: no internet, no login, no pairing code.
  • LAN script editor — edit scripts from a laptop browser on the same network via a hand-rolled HTTP server built directly on Apple's Network framework (zero external dependencies), with an in-app QR code for the URL.
  • Local persistence with SwiftData; scripts organized into folders with search.
  • Universal, adaptive layout for iPhone and iPad, portrait and landscape, Stage Manager–aware.

Requirements

  • iOS / iPadOS 17.0+
  • Xcode/macOS not required to build — this is a pure SwiftPM project built with xtool. (A Mac with Xcode also works fine if you have one; it's just not required.)

Getting the app

  • Prebuilt: grab the unsigned .ipa from the Releases page, or the latest TeleprompterStudio-ipa artifact from the Build IPA GitHub Actions workflow, and sideload it (e.g. with xtool dev build --sign or Sideloadly).
  • Build it yourself: see below.

Building

xtool dev build          # build
xtool dev build --ipa    # produce an unsigned .ipa
xtool dev build --sign   # sign and install to a connected device (needs `xtool auth` login)
xtool dev                # build + install + run in one step

Before shipping to your own device, replace bundleID in xtool.yml and AppIcon.png with your own — see BUILD_NOTES.md for the full first-build checklist and every non-obvious decision behind the project layout.

Project structure

Sources/TeleprompterStudio/
├── App/                 entry point, root navigation
├── ScriptLibrary/       home: list/CRUD/paste, folders, search
├── Editor/              rich-text + LaTeX authoring
├── TeleprompterEngine/  WKWebView renderer + scroll controller
├── CameraKit/           AVFoundation session, real + synthetic cinematic
├── Recorder/            AVAssetWriter / movie output, prompt-only bypass
├── SyncKit/             MultipeerConnectivity Director/Companion sync
├── LANServer/           Network.framework HTTP server + web editor
├── DesignSystem/        shared design tokens
├── Models/              SwiftData models
└── SharedWebResources/  vendored marked.js / KaTeX, shared across in-app and LAN web views

License

MIT

About

Native iOS/iPadOS teleprompter + camera studio (Cinematic capture, LAN sync, LaTeX scripts) — built entirely without Xcode/a Mac via SwiftPM + xtool

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages