Local-only Teams meeting recorder & transcriber for Windows 11 (Tauri 2 + Rust + Preact). On-device ASR, diarization, and voice ID. Nothing leaves your machine.
Rust
0
28 commits
updated Sep 14, 2026
Witness is a local meeting recorder and transcriber for Windows 11. It can detect Microsoft Teams calls, capture microphone and system output on separate tracks, transcribe on the device, identify recurring speakers, and keep a searchable archive.
Meeting audio, transcripts, notes, and voice prints are not sent to a Witness
service. Choosing Download for a speech model connects to Hugging Face;
choosing Download GPU libraries connects to PyPI's
files.pythonhosted.org host for pinned NVIDIA-published wheels. No meeting
content is included in those requests. See Privacy before
recording other people.
Witness is pre-1.0 software. Test it with non-critical recordings and keep independent backups of anything you cannot replace.
Witness currently targets Windows 11. Install a release build, start Witness, and leave its tray process running. Closing the main window hides it; use Quit from the tray to exit.
Before an important call:
Recording works without models; transcription, diarization, voice matching, and live captions require their corresponding downloads. A tray notification announces automatic recording. The top bar and Diagnostics show capture loss or device failures.
Model downloads are explicit and pinned to immutable upstream revisions. Each file is size- and checksum-verified before it is considered installed. A failed or interrupted download remains incomplete and can be repaired from Settings.
| Capability | Model | Approximate disk use |
|---|---|---|
| Fast ASR and live captions | Parakeet TDT 0.6B v3 | 2.6 GB |
| Remote-speaker diarization | Sortformer | 470 MB |
| Cross-meeting speaker matching | ERes2Net | 26 MB |
| Alternate ASR | Whisper large-v3-turbo q5 | 550 MB |
Allow at least 5 GB free when installing every model so downloads and temporary
files have headroom. Parakeet attempts NVIDIA CUDA and falls back to CPU if the
provider cannot initialize. GPU transcription needs the CUDA 13 runtime and
cuDNN 9 resolvable by the DLL loader; Witness checks this before every engine
load, automatically picks up installs referenced by CUDNN_PATH or placed in
the standard NVIDIA\CUDNN layout (under Program Files or LOCALAPPDATA), and
otherwise logs which DLLs are missing. Settings shows the same GPU status.
Machines with an NVIDIA GPU but no CUDA developer install can use Settings →
Models → Download GPU libraries (~1 GB): Witness fetches the pinned,
SHA-256-verified NVIDIA-published CUDA runtime, cuDNN, and nvJitLink wheels
hosted by PyPI (files.pythonhosted.org) and installs just the required DLLs
into the data directory — no admin rights, no system changes, removable by
deleting cuda/. GPU transcription can use the new libraries immediately,
without a restart.
Whisper is CPU-only in the default build. Model revision and integrity status appears in Settings and the privacy-safe diagnostic report.
witness-settings.toml is read from WITNESS_SETTINGS (a file, or a directory
containing the default file) when set, otherwise from beside witness.exe.
The configured data directory contains:
witness.db transcripts, notes, queue state, and voice prints
audio/ archived .opus recordings
rec-tmp/ in-flight/recoverable WAV files and sidecars
models/ downloaded model cache and integrity metadata
cuda/ optional app-managed CUDA/cuDNN/nvJitLink GPU libraries
witness.log rotating operational log
Changing the data directory applies after restart and does not move existing data. Deleted meetings remain in the recycle bin for 30 days, then are purged at startup. Emptying the bin is immediate and irreversible. Backups are independent copies and are not affected by retention actions in the app.
The database, audio, settings, logs, and backups are not encrypted by Witness. Use Windows device encryption/BitLocker and an account with a strong sign-in if the archive is sensitive.
Use Settings > Storage > Create backup while recording and processing are
idle. Witness writes into a private staging directory and publishes a
Witness-backup-... directory only after every payload and its checksum
manifest is complete. The snapshot includes:
witness.db snapshot, including transcripts, notes,
recycle-bin state, queue state, and voice prints;rec-tmp files;Large model binaries are intentionally excluded and can be re-downloaded. Never choose a destination inside the active Witness data directory. Full verification and non-destructive restore instructions are in Backup and recovery.
Open Settings > Diagnostics to inspect the active data/database/log paths, SQLite health, capture loss, processing stage, queue depth, and model integrity. The copied/exported support report contains operational state and local paths, but no transcript text, notes, audio, voice prints, or private settings. Review paths before sharing it.
Common problems:
witness.log — a warning names any CUDA/cuDNN DLLs the loader cannot find,
and a single-digit realtime factor in completion toasts means CPU. Use
Download GPU libraries in Settings → Models (or install cuDNN 9 for
CUDA 13 / set CUDNN_PATH) to restore GPU transcription. CPU fallback is
functional but slower.rec-tmp files and use Retranscribe. Do
not purge the meeting until recovery succeeds.Requirements:
>=24.15 <25);PATH and set
LIBCLANG_PATH to your LLVM bin directory when it is not discoverable.
Do not rely on machine-specific paths in repository configuration.npm ci
npm run build
Set-Location src-tauri
cargo test --locked
cargo clippy --locked --all-targets -- -D warnings
Set-Location ..
npm run tauri dev
Build the NSIS installer with npm run release:windows. The command compiles
first, verifies the generated ONNX Runtime provider DLLs, and only then bundles
them through the release configuration. The base Tauri configuration keeps
bundling disabled so a one-phase tauri build cannot silently omit those DLLs.
The default Whisper build uses CPU; --features whisper-cuda requires a
compatible CUDA toolkit. Runtime CUDA support for Parakeet also needs a
compatible NVIDIA driver and cuDNN 9.
See Contributing and the release checklist before proposing a change or shipping an artifact.
Report vulnerabilities as described in SECURITY.md. Witness is released under the MIT License.
28 commits
Rust
68.7%
TypeScript
26.5%
CSS
3.7%
Local-only Teams meeting recorder & transcriber for Windows 11 (Tauri 2 + Rust + Preact). On-device ASR, diarization, and voice ID. Nothing leaves your machine.
Rust
0
28 commits
updated Sep 14, 2026
Witness is a local meeting recorder and transcriber for Windows 11. It can detect Microsoft Teams calls, capture microphone and system output on separate tracks, transcribe on the device, identify recurring speakers, and keep a searchable archive.
Meeting audio, transcripts, notes, and voice prints are not sent to a Witness
service. Choosing Download for a speech model connects to Hugging Face;
choosing Download GPU libraries connects to PyPI's
files.pythonhosted.org host for pinned NVIDIA-published wheels. No meeting
content is included in those requests. See Privacy before
recording other people.
Witness is pre-1.0 software. Test it with non-critical recordings and keep independent backups of anything you cannot replace.
Witness currently targets Windows 11. Install a release build, start Witness, and leave its tray process running. Closing the main window hides it; use Quit from the tray to exit.
Before an important call:
Recording works without models; transcription, diarization, voice matching, and live captions require their corresponding downloads. A tray notification announces automatic recording. The top bar and Diagnostics show capture loss or device failures.
Model downloads are explicit and pinned to immutable upstream revisions. Each file is size- and checksum-verified before it is considered installed. A failed or interrupted download remains incomplete and can be repaired from Settings.
| Capability | Model | Approximate disk use |
|---|---|---|
| Fast ASR and live captions | Parakeet TDT 0.6B v3 | 2.6 GB |
| Remote-speaker diarization | Sortformer | 470 MB |
| Cross-meeting speaker matching | ERes2Net | 26 MB |
| Alternate ASR | Whisper large-v3-turbo q5 | 550 MB |
Allow at least 5 GB free when installing every model so downloads and temporary
files have headroom. Parakeet attempts NVIDIA CUDA and falls back to CPU if the
provider cannot initialize. GPU transcription needs the CUDA 13 runtime and
cuDNN 9 resolvable by the DLL loader; Witness checks this before every engine
load, automatically picks up installs referenced by CUDNN_PATH or placed in
the standard NVIDIA\CUDNN layout (under Program Files or LOCALAPPDATA), and
otherwise logs which DLLs are missing. Settings shows the same GPU status.
Machines with an NVIDIA GPU but no CUDA developer install can use Settings →
Models → Download GPU libraries (~1 GB): Witness fetches the pinned,
SHA-256-verified NVIDIA-published CUDA runtime, cuDNN, and nvJitLink wheels
hosted by PyPI (files.pythonhosted.org) and installs just the required DLLs
into the data directory — no admin rights, no system changes, removable by
deleting cuda/. GPU transcription can use the new libraries immediately,
without a restart.
Whisper is CPU-only in the default build. Model revision and integrity status appears in Settings and the privacy-safe diagnostic report.
witness-settings.toml is read from WITNESS_SETTINGS (a file, or a directory
containing the default file) when set, otherwise from beside witness.exe.
The configured data directory contains:
witness.db transcripts, notes, queue state, and voice prints
audio/ archived .opus recordings
rec-tmp/ in-flight/recoverable WAV files and sidecars
models/ downloaded model cache and integrity metadata
cuda/ optional app-managed CUDA/cuDNN/nvJitLink GPU libraries
witness.log rotating operational log
Changing the data directory applies after restart and does not move existing data. Deleted meetings remain in the recycle bin for 30 days, then are purged at startup. Emptying the bin is immediate and irreversible. Backups are independent copies and are not affected by retention actions in the app.
The database, audio, settings, logs, and backups are not encrypted by Witness. Use Windows device encryption/BitLocker and an account with a strong sign-in if the archive is sensitive.
Use Settings > Storage > Create backup while recording and processing are
idle. Witness writes into a private staging directory and publishes a
Witness-backup-... directory only after every payload and its checksum
manifest is complete. The snapshot includes:
witness.db snapshot, including transcripts, notes,
recycle-bin state, queue state, and voice prints;rec-tmp files;Large model binaries are intentionally excluded and can be re-downloaded. Never choose a destination inside the active Witness data directory. Full verification and non-destructive restore instructions are in Backup and recovery.
Open Settings > Diagnostics to inspect the active data/database/log paths, SQLite health, capture loss, processing stage, queue depth, and model integrity. The copied/exported support report contains operational state and local paths, but no transcript text, notes, audio, voice prints, or private settings. Review paths before sharing it.
Common problems:
witness.log — a warning names any CUDA/cuDNN DLLs the loader cannot find,
and a single-digit realtime factor in completion toasts means CPU. Use
Download GPU libraries in Settings → Models (or install cuDNN 9 for
CUDA 13 / set CUDNN_PATH) to restore GPU transcription. CPU fallback is
functional but slower.rec-tmp files and use Retranscribe. Do
not purge the meeting until recovery succeeds.Requirements:
>=24.15 <25);PATH and set
LIBCLANG_PATH to your LLVM bin directory when it is not discoverable.
Do not rely on machine-specific paths in repository configuration.npm ci
npm run build
Set-Location src-tauri
cargo test --locked
cargo clippy --locked --all-targets -- -D warnings
Set-Location ..
npm run tauri dev
Build the NSIS installer with npm run release:windows. The command compiles
first, verifies the generated ONNX Runtime provider DLLs, and only then bundles
them through the release configuration. The base Tauri configuration keeps
bundling disabled so a one-phase tauri build cannot silently omit those DLLs.
The default Whisper build uses CPU; --features whisper-cuda requires a
compatible CUDA toolkit. Runtime CUDA support for Parakeet also needs a
compatible NVIDIA driver and cuDNN 9.
See Contributing and the release checklist before proposing a change or shipping an artifact.
Report vulnerabilities as described in SECURITY.md. Witness is released under the MIT License.
28 commits
Rust
68.7%
TypeScript
26.5%
CSS
3.7%