Every CLI command works against one of two backends:Documentation Index
Fetch the complete documentation index at: https://docs.openwhispr.com/llms.txt
Use this file to discover all available pages before exploring further.
- Local — the desktop app’s loopback bridge. Fast, offline-capable, mutates SQLite directly via the same code paths the UI uses (audio cleanup, sync hooks, search index, broadcast all run).
- Remote — the cloud REST API at
api.openwhispr.com. Works when the desktop app is closed or you’re on a different machine.
Auto-detection (default)
In auto mode, the CLI picks a backend in this order:- The
--localor--remoteflag (if passed) - The
OPENWHISPR_BACKENDenvironment variable (local,remote, orauto) - The
backendkey in~/.openwhispr/cli-config.json - Auto: local if the desktop bridge is reachable, otherwise remote if an API key is configured, otherwise an error with guidance
Force a backend
When to prefer each
| Situation | Backend |
|---|---|
| Desktop app open, recent recording | Local — most up-to-date |
| Desktop closed or different machine | Remote |
| You want immediate UI feedback (broadcast events) | Local |
| You don’t trust the local SQLite to be in sync | Remote |
| Offline | Local only |
Capability matrix
| Command | Local | Remote |
|---|---|---|
notes list/get/create/update/delete/search | ✓ | ✓ |
folders list/create | ✓ | ✓ |
transcriptions list/get/delete | ✓ | ✓ |
audio delete | ✓ | ✗ (cloud doesn’t store audio) |
Mixing local and remote during a meeting
If the desktop app is recording or has just finished a meeting, prefer--local. The local SQLite is authoritative until sync reconciles. Running destructive commands against remote during this window can drift the two copies until the next sync pulls them back together.