Docs / Voice & remote
Voice and remote access
Two features leave the keyboard behind: dictation straight into the focused pane, and a remote listener that mirrors your terminal to the RavenRemote iOS app — over the LAN, over a tailnet, or through a relay you host yourself.
Voice dictation
Dictation records from the default microphone, and on stop the audio is transcribed through Deepgram and typed into the focused pane — prompt text for an agent, a commit message, whatever the cursor is on. Audio is captured as WAV, so the sample rate travels with the bytes and nothing is resampled. There is no chord for it: dictation is started from the notch companion and from the phone.
- The Deepgram API key lives only on your Mac, written by Settings in the terminal — the phone never sees it.
- No key configured → it reports that plainly instead of failing silently.
The iOS remote listener
raven-term remote start (or [remote] enable = true in the config, so a headless raven-muxd comes up serving) starts a TLS listener over a persistent self-signed certificate. The phone pairs once — raven-term pairing --qrprints the code — and pins the certificate's fingerprint; every request after that carries the pairing token. It then receives live terminal deltas and sends input back: approve an agent's prompt from the couch, or check on a long build from the train.
- Same Wi-Fi needs nothing else. A tailnet works, and so does a
raven-relayyou host yourself — the phone's TLS session runs end-to-end through the relay and terminates inside raven-term, so the relay sees ciphertext only. - Voice input from the phone rides the same path: audio goes to the Mac, the Mac calls Deepgram, the transcript lands in the pane.
- The listener is off by default;
raven-term remote stopandremote statusare the rest of the family.
Remote shells
Separately from the bridge, any pane can be a remote shell: program = ["ssh", "host"] in the config launches an arbitrary command instead of $SHELL — the terminal semantics stay identical.