Skip to content

Latest commit

 

History

History
61 lines (43 loc) · 1.92 KB

File metadata and controls

61 lines (43 loc) · 1.92 KB

Quill CLI contract

The command-line surface that scripted callers can depend on. Changes here follow semver: additive options are a minor bump; a change to existing behaviour or to an exit-code meaning is a major bump.

Invocation

quill transcribe <file> [--output <path>] [--model <variant>]
  • <file>: path to a local media file WhisperKit can decode.
  • --output <path> / -o: write the transcript to a file instead of stdout.
  • --model <variant> / -m: WhisperKit model variant (default openai_whisper-base).

Streams

  • stdout: the markdown transcript, and nothing else, when --output is not given. Safe to redirect: quill transcribe clip.m4a > clip.md.
  • stderr: human-readable progress and error messages. Never part of the transcript.
  • With --output <path>, the transcript is written to that path and stdout is left empty.

Markdown format

# <title derived from the file name>

<segment 1 text>

<segment 2 text>

…

When no speech is detected, the body is _No speech was transcribed._.

Exit codes

Code Meaning
0 Success. A transcript was produced.
64 Usage error. Bad or missing arguments (EX_USAGE).
1 Runtime failure. Model load, file access, or transcription failed. The reason is printed to stderr as Error: <message>.

A caller should treat any non-zero exit as "no usable transcript" and read stderr for the reason.

Depending on this surface

A caller can rely on everything above across any release that does not carry a major bump. In practice that means: shell out to quill transcribe <file> --output <path>, treat exit 0 as "a transcript exists at that path", and read stderr for the reason on anything else.

What is deliberately NOT part of the contract: the exact wording of progress lines on stderr, the segmentation the model chooses (which paragraph breaks fall where), and the on-disk layout of the model cache.