A free, open-source teleprompter with a remote controller for macOS, Windows, Linux and Android. The computer serves the app over local Wi-Fi; a phone opens the reading screen from a QR code. The local session works without internet or WebRTC.
Android can also edit and read a script on its own, or host a session for other phones. The static web version uses PeerJS/WebRTC and runs on ordinary HTTPS hosting. It currently requires a working direct device connection; see web connection diagnostics and relay limitations.
Open in your browser · Apps and installation · All releases · User guide
Downloads and SHA-256 checksums are attached to each release. Speech language models are installed separately.
macOS: the current build is ad hoc signed and not notarized by Apple. After trying to open the app, go to System Settings → Privacy & Security → Open Anyway, then confirm Open. Only do this for a download you trust. See opening the Mac build.
- Open Efir on the computer. It starts in the controller.
- Connect the phone to the same Wi-Fi network.
- Select Connect teleprompter and scan the QR code.
- Edit the script, choose its size and orientation, then press Play.
On Android, choose Read on this device, Start server, or Connect to server. Read here opens the reading screen from the editor or preview. Tap the text to play or pause. Controls hide during playback and return on pause; the mirror and fullscreen buttons are available there.
If a VPN blocks the connection, enable Allow LAN or exclude the browser from the tunnel. Guest Wi-Fi with client isolation prevents devices from connecting.
| Platform | Install or run | Requirements |
|---|---|---|
| macOS | Open Efir.app |
macOS 14+, Apple Silicon or Intel |
| Windows | Extract the whole ZIP; run efir.exe |
Windows 10/11 x64, WebView2 Runtime |
| Linux | sudo apt install ./Efir-Linux-x64.deb or the ARM64 package |
Ubuntu 24.04+ |
| Android | Install Efir-Android.apk |
Android 8+, a recent System WebView |
| Browser | Serve web/ on HTTPS |
A browser with WebRTC; speech support varies |
The local macOS build is ad hoc signed and is not notarized. Public Developer ID distribution needs a separate signed build and Apple notarization. See macOS distribution for the workflow and checks.
Windows packages keep web/, speech/ and the DLLs beside efir.exe.
Closing a desktop window leaves its server running; use the menu-bar or tray
icon to reopen the controller or quit. On Android, a notification controls the
host service.
- Multiple reading screens with synchronized passages, exact simultaneous previews, format comparison and individual display calibration.
- Speed control, sections, horizontal/vertical mirrors, countdown and configurable remotes and pedals.
- Offline native speech on macOS; Vosk on Windows/Linux; on-device recognition on supported Android devices.
- Script library, TXT/Markdown/DOCX import, settings profiles and portable JSON backups.
- English, Russian, Spanish, Simplified Chinese, Hindi and Arabic interfaces.
- Native screen protection on Android; browser fallback for local HTTP sessions.
Scripts stay in device storage. The server serves files and relays packets; it has one shared session and does not save scripts. Speech models are installed separately, and system WebViews keep the application packages small.
| Path | Contents |
|---|---|
web/ |
Shared UI, rendering, speech matching and transports; ES modules without a build step |
mac/ |
Swift/SwiftUI shell, WKWebView, local server and native speech |
desktop/ |
Rust/Tauri shell for Windows and Linux |
android/ |
Kotlin shell, WebView and foreground server service |
script/ |
Build and asset-generation utilities |
tests/ |
Protocol, browser, performance and native integration checks |
docs/ |
Usage, development, platform contracts and release verification |
site/ |
Static multilingual project website; published with GitHub Pages |
On a Mac with Xcode installed:
./script/build_and_run.sh --build
open mac/build/Build/Products/Debug/Efir.appThe checked-in Xcode project works without manual setup. XcodeGen regenerates
it from mac/project.yml. Build products, local tools and signing keys are
excluded from Git.
- Usage and troubleshooting
- Building each platform
- Platform bridge and protocol
- Running tests
- Release verification
- Website and search discovery
Dependency licenses and provenance are kept beside the vendored sources: web assets, FlyingFox, desktop runtime and Android dependencies.
Efir's original code is licensed under MIT. Third-party code, fonts and bundled runtimes retain their own licenses; see the notices linked above.
Resource audit and measurement limits: performance audit.