Skip to content

CLI quickstart

OpenASR’s Rust CLI, local HTTP API, and model catalog are developed in the public Apache-2.0 open core at github.com/QuintinShaw/openasr.

Download the archive for your platform from GitHub Releases, verify against the release’s SHA256SUMS, extract, and put openasr on your PATH. macOS (arm64, x86_64), Linux (x86_64, arm64), and Windows (x86_64, arm64) are all published as prebuilt archives, alongside CUDA/ROCm/Vulkan backend variants for Linux and Windows and a musl variant for Linux.

macOS / Linux:

bash
tar -xzf openasr-*-macos-arm64.tar.gz # or -macos-x86_64 / -linux-x86_64 / -linux-arm64
./openasr --help

Windows:

powershell
Expand-Archive openasr-*-windows-x86_64.zip
.\openasr.exe --help

Published images on Docker Hub track each core release (CPU multi-arch and CUDA). The container default is the local HTTP server; model packs still install into a volume at /data:

bash
docker pull quintinshaw/openasr:latest
docker run --rm -p 8080:8080 -v openasr-data:/data quintinshaw/openasr:latest

Full tag list, GPU setup, and openasr pull --yes inside the container: Docker.

The ggml backend is a git submodule compiled from source, so clone recursively. You’ll need cmake, a C/C++ toolchain, Rust 1.95.0 (pinned by rust-toolchain.toml), and on Linux libasound2-dev:

bash
git clone --recurse-submodules https://github.com/QuintinShaw/openasr.git
cd openasr
cargo build --release -p openasr-cli # binary at target/release/openasr

The macOS and Windows desktop apps are separate closed-source products — see the desktop app guide if you want a GUI instead of the CLI.

native is the default backend: it runs local ggml-backed .oasr model packs and is fail-closed at every stage. The first run offers to download the default model with a visible confirmation (showing model, quant, size, host, and license), then runs fully offline:

bash
openasr transcribe audio.wav

Pick a model and format, and write to a file (t is an alias for transcribe):

bash
openasr t audio.wav --model whisper-small --format srt --output audio.srt

Transcribe a whole directory (one transcript per file), or write several formats at once:

bash
openasr transcribe ./recordings --output ./transcripts
openasr transcribe audio.wav --format srt --format vtt --format json

Never touch the network — fail closed if the model isn’t installed yet:

bash
openasr transcribe audio.wav --offline
bash
openasr search # browse the model catalog
openasr pull whisper-small # download and install a pack
openasr list # installed packs
openasr show whisper-small # catalog card or local .oasr pack details
openasr rm whisper-small # remove an installed pack

Browse available models, sizes, and quantizations on the Models page.

bash
openasr verify /path/to/model.oasr
openasr show /path/to/model.oasr

Package validation is local-only. It does not download artifacts or run inference.

To pin an explicit local pack for transcription instead of an installed model, pass --model-pack:

bash
openasr transcribe audio.wav --model-pack /path/to/model.oasr
bash
openasr serve

Then call the OpenAI-compatible transcription endpoint:

bash
curl -s http://127.0.0.1:8080/v1/audio/transcriptions \
-F model=whisper-small \
-F response_format=json

The server never downloads a model to satisfy a request — it only runs an already-installed or explicitly pinned local pack.

For authentication, TLS, and remote access configuration, see Server API.

bash
openasr doctor

See the CLI reference for the full command surface, and openasr --help / openasr <command> --help for the authoritative flag list.