The teleprompter
app without
limits.
Read markdown straight from your Obsidian vault, scroll the page with your voice, record through the script with the camera floating over your reading line, save the take in the same folder as the file. Mirror mode, voice tracking, in-app camera, open gate recording.
Open the file. Hit record.
Everything in between just works.
Your camera, your script,
same screen.
Open Prompter has its own camera. Tap the camera chip and a live picture-in-picture tile of your own viewfinder floats over the script. Drag it anywhere, tap it to expand to full screen, tap to minimize back. Voice tracking keeps reading while you record — same audio stream feeds both the writer and the recognizer, no second mic tap.
- ● In-app capture — record while reading, in one app
- ● Live PiP of your own viewfinder over the script
- ● Tap-to-expand and tap-to-minimize between PiP tile and full-screen camera
- ● Save the take to Photos AND next to your script — the file lives in the same folder as the markdown
Record once.
Crop everywhere.
On iPhone 17 the front camera has a 1:1 (square) sensor. Open Gate recording captures the full 3840 × 3840 instead of the cropped frame the stock camera app gives you — record once, then crop a 9:16, 16:9, or 1:1 from the same take in your editor. No reshoot per platform.
Older iPhones don't have the 1:1 sensor; on those, Open Prompter still records at the maximum frame the sensor exposes (4:3 portrait or landscape, your pick) — just without the square headroom for re-cropping.
Free. And open source.
The feature list is the whole app.
Every feature below is included. No tiers, no trial, no upsell. MIT on GitHub.
Built in public. Yours to fork.
Free. Forever. Really.
No upsell screen hidden behind the settings drawer. No "Pro" tier for mirror. If that changes, you'd see it in the git log before you saw it on the App Store.
GitHub Sponsors + Buy Me a Coffee.
The teleprompter never gets paywalled. Year 2 may add optional pro features for teams — version history, shared folders. The teleprompter stays free.
struct Prompter: View {
@State var script: MarkdownFile
@State var mirror = false
var body: some View {
TimelineView(.animation) {
ScriptScroll(script, ctx)
.scaleEffect(x: mirror ? -1 : 1)
}
}
}