CLI and MCP
The same local service, with a different door.
Command line
local-transcribe is a client of the shared service. Every command prints JSON, and the service is started on demand if it is not running.
local-transcribe status local-transcribe models list
local-transcribe jobs add ./interview.m4a --root ~/recordings
local-transcribe jobs add ./interview.m4a --node Gaming-PC --lan-model <model id>
local-transcribe jobs list local-transcribe export <job id> --format txt --output ./transcript.txt
Exit codes
- 0: success
- 1: request failed
- 2: bad usage
- 4: service unavailable
MCP
voice-to-text-mcp speaks MCP over local stdio and is another client of the shared service. No model is ever loaded inside the MCP process.
- Submit a transcription and get a job id back immediately, then poll status and result.
- List jobs and models, cancel, retry, and export results as TXT or JSON.
- File access is fail-closed: inputs and export destinations must live under explicitly allowed roots, and a request without roots is denied.
- No network listener, no unrestricted filesystem access, no shell execution.
The tool list changes between versions. docs/mcp.md in the repository is the authority.
The GUI, the CLI and the MCP server all connect to the same service instance backed by the same files. A job started in one is visible in the others.