Int. server room — continuous

The security review, on one page.

A desktop app that needs no account, no server and no analytics. Its data is one folder. It makes one optional download. Everything it touches is listed below.

Int. server room — continuous

Here is the short version of the security review. There is no account, and no server to stand up.

Recordings, scripts and projects live in one folder on the device. Captions are made there too. The one download is a speech model, fetched once, and you can put it in place yourself. The rest is on this page.

170 wpm
The app's prompter, in small. There the highlight follows your voice; here it keeps a steady pace.
Accounts
None needed
Servers to run
None
Analytics and crash reports
None
Where data lives
One folder per user
Downloads after install
One, optional
Programs it starts
Its own ffmpeg

Int. the firewall — night

What leaves the device.

What the app doesWhere it happensNetwork
Records camera, microphone and screenOn the device, written to disk as it goesNone
Edits, renders and exports videoOn the device, with the ffmpeg it ships withNone
Makes captions and transcriptsOn the device, with Whisper (whisper.cpp)One download of the speech model, the first time
Follows a voice, takes dictationThe platform's recognizer, or Whisper on the deviceIt depends on the platform: see speech engines
Signs in to a Lectern accountOnly if someone chooses to (for Pro, or a seat in your organization's plan). Nothing needs oneHTTPS to Lectern's servers, and only after someone has signed in on that device
Reports usage or crashesIt doesn'tNone
Updates itselfIt doesn't yet. A new version is installed over the old one. PlannedNone

The one download

The first time someone makes captions (or, on Linux, reads with voice follow), the app fetches the Whisper base model: one file, ggml-base.bin, 148 MB, over HTTPS from huggingface.co (which hands the download on to its file host). It's checked against a SHA-256 pinned in the app before it's used.

Or put it there yourself

On a network that blocks the download, place the file at speech-models/ggml-base.bin in the app's data folder. The app finds it and doesn't ask for it again. Until it's there, captions and Whisper's voice follow say they need it; everything else works.

Int. the microphone — close

Speech engines, platform by platform.

Voice follow and dictation listen to the microphone. Which engine does the listening, and whether it needs a connection, depends on the platform.

PlatformEngineWorks offline
macOS, iOSApple SpeechYes, when the language's on-device model is installed
AndroidThe system's SpeechRecognizerYes on Android 12 and later, with an on-device recognizer
Windows (default)Windows dictationNo. It needs Windows' online speech recognition turned on
Windows (chosen in Settings)Whisper, on the deviceYes, once the model is in place
LinuxWhisper, on the deviceYes, once the model is in place
BrowserThe browser's Web Speech APIIt depends on the browser. Chrome sends audio to Google

Captions and transcripts of a finished recording always use Whisper on the device, on every desktop platform. Scrolling at a set speed uses no speech engine at all.

Int. the file system — day

One folder of data, one of cache.

PlatformDataCache
macOS~/Library/Application Support/com.jacobrunge.teleprompter/~/Library/Caches/com.jacobrunge.teleprompter/
Windows%APPDATA%\com.jacobrunge.teleprompter\%LOCALAPPDATA%\com.jacobrunge.teleprompter\
Linux~/.local/share/com.jacobrunge.teleprompter/~/.cache/com.jacobrunge.teleprompter/

In the data folder

  • library/ Everything a user makes: Recordings/, Scripts/, Projects/, Exports/ and Trash/. Scripts are text, projects are JSON, media is ordinary video and audio files.
  • speech-models/ The Whisper model, once it's been downloaded or put in place.

In the cache folder

  • previews/ Thumbnails and waveforms for the editor's timeline. Safe to delete: they're made again when needed.

Back up or redirect library/ and you have a user's work. The trash empties itself after 7, 30 or 90 days, as the user sets.

Int. the operating system — a dialog appears

What it asks the system for.

It asks forToScope
Camera and microphoneShow the preview and recordThe devices the user picks
Speech recognitionFollow the reader's voicemacOS and iOS ask; elsewhere it comes with the microphone
Screen recordingRecord a display, a window or a regionThe system's own picker chooses what's shared, each time
FilesKeep the library and the timeline's cacheThose two folders only. Saving an export elsewhere goes through the system's save dialog
Other programsConvert and render videoOnly the ffmpeg inside the app
A local port (Linux only)Play the library's media in the web view127.0.0.1, a random port and token each run, library files only

Int. the installer — unpacked

What's inside it.

  • Tauri 2, and the system's web view. WebView2 on Windows, WKWebView on macOS, WebKitGTK on Linux. No browser is bundled, so it's patched with the system.
  • ffmpeg, an LGPL build. No x264 and no other GPL parts. H.264 comes from the system's encoders (VideoToolbox, Media Foundation) or OpenH264.
  • whisper.cpp, with OpenAI's Whisper base model, which knows many languages.

Where it runs

  • macOS Apple silicon. Screen recording needs macOS 15 or later.
  • Windows With WebView2, which Windows 11 includes.
  • Linux With WebKitGTK 4.1 and the GStreamer plugins for camera and playback.
  • iOS, Android and the browser With fewer features. The phone apps aren't out. Planned

Int. the deployment console — soon

Rolling it out. Not all written yet.

You'll wantWhere it stands
Signed and notarized macOS buildsBeing set up Planned
Signed Windows installersNot yet: installers are unsigned Planned
Automatic updatesNot yet Planned
Silent install and MDM notesTo be written Planned
An accessibility conformance report (VPAT)To be written Planned

Int. change advisory board — Tuesday

Asked before it's approved.

Does it collect student data?

Not unless someone signs in. The app needs no account, and nothing a user records, writes or answers leaves the device. An account (for Pro, or a seat in your plan) holds a name, an email address, a password (stored hashed), the devices signed in with their network address, and what was bought; your plan's admins see members' names, email addresses and the storage they use. Anyone can download or delete their account from the app. Links for sharing projects are planned; with them, viewers' answers would be stored for each viewer, and documented here before they ship.

Can we block its network access entirely?

Yes. Recording, editing and export don't notice. Captions need the speech model, which you can put in place yourself. On Windows, choose Whisper in Settings so voice follow stays on the device.

Is the app itself accessible?

Its text and controls are held to WCAG AA contrast, and every change is checked with automated accessibility tests. A formal conformance report hasn't been written.

Who do we talk to?

Write to hello@lecternvideo.com. For the rest of the product, start at the front page.

Ready when you are.

Lectern is at draft 0.1.0, for macOS, Windows and Linux.

Get the app