rtech-whisper-hub
Open source under the MIT licence. View the source
A small self-hosted server for a dictation app that issues device keys, relays speech and chat requests, syncs notes between devices, and serves a remote MCP endpoint.
Extends OpenWhispr

The problem
Lets one person's desktop and iPhone share notes and reach a home inference box through one authenticated URL, at home or away.
How it works
TypeScript on Node 24 (native type stripping), Hono, Drizzle and Postgres. Per-device API keys are stored as a SHA-256 hash plus prefix. It relays speech-to-text, voice synthesis and OpenAI-style chat completions to an inference host you run, syncs notes, folders, dictionary words, snippets and transcriptions, and exposes POST /mcp with note tools for Claude Code and Codex.

Features
- Per-device key minting, listing and revocation via admin routes and CLI
- Speech-to-text, synthesis and LLM relay to any OpenAI-compatible upstream
- Multi-device sync using upstream OpenWhispr's personal-scope protocol
- Remote MCP tools: notes_list, notes_search, note_get, note_create, note_update, folders_list, transcriptions_list
- Tests run on in-process PGlite with fake upstreams
How it was built
The hub was started on 2026-09-29 because the self-hosted dictation setup, a desktop app fork plus a native iPhone app, had no public sync server to share.
The rule was to speak the protocol the desktop app already uses and write down every place it differs. The contract was written first, then a skeleton with per-device keys, then sync routes for five kinds of data.
A voice relay, a remote MCP server and an LLM relay followed. 62 of the 99 commits landed on the first day.
Review found the hub stamped a row before its transaction committed, so a client cursor could skip a late row and lose it permanently. The fix routes every stamping write through one helper and adds a cursor lookback on the client.
AI coding agents wrote the code, and Rico decided to reimplement rather than invent, so the desktop client only changes its base URL.