voice-bird-cli 0.4.0

Voice Bird CLI - local-first voice transcription TUI
Documentation
# Voice Bird CLI on Windows

> **Windows is cloud-only since 0.4.0.** Local Whisper inference (and the
> Nemotron local engine) are not built on Windows — transcription streams to
> VoiceBird Web, which requires a Voice Bird API key. In exchange, installing
> no longer needs CMake, LLVM/libclang, or a whisper.cpp compile: the standard
> Rust MSVC toolchain is enough.
>
> There is still no prebuilt Windows binary — `cargo`, `npm`, and `pip` all
> compile the (pure-Rust) binary from source. The build takes a couple of
> minutes, not the 5–10 of the old whisper.cpp builds.

---

## Install

1. Install **Rust** via [rustup]https://rustup.rs/ with the default **MSVC**
   toolchain (`x86_64-pc-windows-msvc`). Rustup will prompt you to install the
   **Visual Studio C++ Build Tools** if they're missing — that provides
   `link.exe` and the Windows SDK, and it is the only C/C++ tooling you need.
2. Build from the **"x64 Native Tools Command Prompt for VS 2022"** (see the
   linker note below), then:
   ```cmd
   cargo install voice-bird-cli --locked
   :: or:  npm install -g voice-bird-cli
   :: or:  pip install voice-bird-cli  (then run `voice-bird-cli` once to build)
   ```
3. Run `voice-bird-cli`. On first launch it opens the **API-key prompt**   paste your Voice Bird API key (from your VoiceBird Web account) and press
   Enter. Press `c` any time to change the key.

## What's different on Windows

- **Cloud-only.** Every recording streams to VoiceBird Web
  (`wss://voicebird.app/api/audio/stream`); recordings live in your VoiceBird
  Web account, not in a local sessions folder.
- **No local models** — there is no model picker (`m`), no model downloads,
  and no export (`e`) / session-path (`p`) keys. Language selection (`l`) is
  always available, since cloud transcription supports multiple languages.
- `c` opens the API-key dialog (it does not toggle local mode — there is none).
- `voice-bird-cli --recover <session-dir>` still works, but only matters for
  session folders created on macOS/Linux.

## Known issue — wrong `link.exe` on `PATH`

**Symptom** — the build dies almost immediately, on trivial crates, with:

```
error: linking with `link.exe` failed: exit code: 1
  = note: link: extra operand '...rcgu.o'
          Try 'link --help' for more information.
```

**Cause** — that is GNU coreutils `link` (a thin `ln` wrapper), not MSVC's
linker. It ships with **Git for Windows** (`C:\Program Files\Git\usr\bin\`)
and MSYS2/Cygwin; if that directory precedes the MSVC `bin` directory on your
`PATH`, `rustc` invokes the wrong tool. This affects *any* Rust MSVC build,
not just Voice Bird.

**Fix** — build from the **"x64 Native Tools Command Prompt for VS 2022"**
(Start menu), which puts the MSVC linker first. Confirm with:

```cmd
where link
:: want: ...\VC\Tools\MSVC\<ver>\bin\Hostx64\x64\link.exe
:: NOT:  ...\Git\usr\bin\link.exe
```

## Verifying the install

The binary has no headless `--version` (it opens an audio device on startup).

- **Binary:** `%USERPROFILE%\.cargo\bin\voice-bird-cli.exe`
- **Version marker** (written by the npm/pip wrappers):
  ```cmd
  type "%USERPROFILE%\.cargo\bin\.voice-bird-cli.version"
  ```
  A direct `cargo install` does not write the marker; use
  `cargo install --list | findstr voice-bird` instead.
- **Logs:** `%USERPROFILE%\.voice-bird\logs\voice_bird_*.log`
- **Config (API key, plaintext):** `%APPDATA%\voice-bird\config.toml`

## History — why Windows went cloud-only

Versions ≤ 0.3.x built local Whisper inference on every platform, which on
Windows required Visual Studio C++ Build Tools **plus** CMake **plus** an
LLVM/libclang that bindgen could use — and broke three different ways in
practice: the coreutils `link.exe` collision above, an Apple-only `metal`
feature leaking into non-Apple builds (fixed in 0.3.4), and a bindgen
0.69 × libclang 19+ incompatibility that emitted broken whisper bindings
(workaround was pinning a side-by-side LLVM 18 via `LIBCLANG_PATH`). Rather
than ask users to assemble that toolchain, 0.4.0 removed local inference on
Windows; macOS and Linux keep full local-first support.