Scriptor

March 6, 2026 · View on GitHub

Crates.io License

Scriptor is a fully local, real-time speech-to-text tool. You speak into your microphone, and it transcribes what you say as you say it. No cloud calls, no API tokens, no privacy concerns. The name comes from the Latin word for scribe: someone who copies and records.

Table of Contents

What Scriptor Looks Like

What It Does

Scriptor has two distinct interfaces. Run it with no arguments and you get the TUI. Pass a command and you get the CLI.

CLI. Quick, throwaway transcription. You speak, it dumps the transcription to stdout. Nothing gets saved unless you explicitly ask for it: not the text, not the audio. Useful when you just want to capture something fast without any persistence.

TUI. A persistence layer for accumulating and organizing knowledge over time. Built for those moments when you've spent months on a project and have a ton of context in your head, but sitting down to write it all out would take forever. With Scriptor's TUI, you just talk. Everything gets captured, organized by project and date, stored in a local SQLite database, and available for playback later.

Under the hood: Rust, NVIDIA Parakeet (ONNX) for speech-to-text, Silero VAD for splitting audio at natural pause points. Models are downloaded automatically on first run.

The Medieval Scribe Aesthetic

Since this is a tool about capturing spoken knowledge, the naming reflects a medieval monk transcribing in a scriptorium:

  • Codex: A project
  • Folio: An audio recording
  • Fragmentum: A small chunk of transcribed audio
  • Archivum: The database, the archive of everything

Installation

Install Scriptor using Cargo:

cargo install scriptor

Usage

Run the TUI (default):

scriptor

Use the CLI for quick transcription tasks:

scriptor from-file recording.wav
scriptor record
scriptor record -t output.txt -a ./recordings
scriptor play ./recordings

Add help, -h, or --help to any subcommand for usage details:

$ scriptor help
Local speech-to-text CLI & TUI

Usage: scriptor [COMMAND]

Commands:
  from-file  Transcribe an existing WAV
  record      Record & transcribe on the fly
  play        Playback a .wav file or a directory of .wav files
  help        Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

CLI Options

CommandOptionsDescription
from-file <file>Transcribe an existing .wav file to stdout
record-t <file>Save transcription to a .txt file
record-a <dir>Save audio recordings to a directory
play <input>Play a .wav file or directory of .wav files

Key Bindings

Main Screen

KeyAction
/ Move up/down in codices, folia, or fragmenta
EnterExpand or collapse codex
/ Move between regions (codices ↔ fragmenta)
Ctrl+↑ / Ctrl+↓Reorder codex or folio

Actions

KeyAction
nNew codex
iImport folio (add recording from file)
aChange archivum
mModify selected codex or folio
dDelete selected codex or folio
rRecord (creates new folio)
eExtend recording (append to selected folio)
pPlay fragmenta from selected fragmentum (select fragmentum first)
cCopy selected fragmentum to clipboard
CCopy all fragmenta from selected folio to clipboard
tToggle timestamp display on fragmenta
sSettings
qQuit

Input Popups (Add/Modify Codex, Folio, Archivum)

KeyAction
EnterSave
EscCancel
Ctrl+aJump to start of line
Ctrl+eJump to end of line

Archivum Selector

KeyAction
/ Navigate archivum list
EnterSwitch to selected archivum
aAdd new archivum
mModify selected archivum
dDelete selected archivum
sSet selected archivum as default
EscReturn to main screen

Settings

KeyAction
dDiscard changes and exit
sSave to current session only
SSave as default (write to config file)
/ Previous/next field
/ Decrease/increase value
EscReturn to main screen

Recording

KeyAction
SpacePause or resume recording
EscStop recording and return to main screen

Configuration

Scriptor uses a TOML configuration file. It is created automatically on first run. Location:

  • Linux: ~/.config/scriptor/scriptor.toml
  • macOS: ~/Library/Application Support/scriptor/scriptor.toml
  • Windows: %APPDATA%\scriptor\scriptor.toml

You can configure the VAD silence threshold, min/max fragmentum duration, pause threshold, which STT and VAD models to use, the input device, and the colour theme.

Data Storage

All data is stored locally:

  • Databases: SQLite files in the data directory. Default location:

    • Linux: ~/.local/share/scriptor/databases/
    • macOS: ~/Library/Application Support/scriptor/databases/
    • Windows: %LOCALAPPDATA%\scriptor\databases\
  • Models: STT and VAD models are stored in the data directory and downloaded automatically from CloudFront on first run. No manual setup, no Hugging Face tokens.

  • Configuration: Stored in the config directory (see above). The configuration file and databases are created automatically when you first run the application.