Skip to content

Security: VibeProgramm/speech-stream

SECURITY.md

Security and privacy

Data flow

Speech Stream is a local client for remote synthesis. Text submitted to a streaming command, speak-text, or the clipboard helper is transmitted over TLS to the selected Cartesia or ElevenLabs service. Provider retention, billing, and account controls are governed by that provider; this project cannot enforce their server-side data handling.

The bridge does not deliberately persist transcripts or audio recordings. PCM is piped to mpv. Debug events expose timing, model, character counts, and audio byte counts rather than text. Error reporting avoids copying full provider payloads, which may contain submitted text or credentials.

This is not a machine-wide privacy guarantee:

  • Calling applications may already store the text or capture stderr.
  • Clipboard managers can retain copied text independently of the helper.
  • Speech Dispatcher diagnostics can contain text. Its completed-text path also passes text through process arguments, where local process inspection may expose it.
  • Same-user processes and privileged users may inspect process memory, environment variables, files, or audio output.

The direct streaming path takes text through stdin. The clipboard helper acts only when invoked and does not monitor the clipboard in the background.

Credentials and local state

Keep keys in environment variables or ~/.config/tts-api-keys.env, outside the checkout. Set the file to mode 0600. Keys are sent in provider authentication headers, not documented command-line arguments. Never commit populated key files or include keys in bug reports.

Provider/voice selection belongs in non-secret JSON configuration. Playback locks, stop timestamps, PID registrations, and mpv Unix sockets live under the user's runtime directory. These coordinate same-user processes; they are not a sandbox against that user or an administrator.

Provider failures are surfaced without automatically switching services or replaying input. Already transmitted text and already played audio cannot be recalled by stopping the client.

Reporting a vulnerability

Use GitHub's private vulnerability report or Report a vulnerability on the repository's Security tab. Private reporting is enabled. Keep exploit details out of public issues, and do not post a real secret to establish that it leaked.

Include the affected commit, entry path, impact, and a reproduction using dummy data. If a real key was exposed, revoke or rotate it with the provider.

This is an early project with no separate maintained release lines. Security fixes target the current codebase; no response-time or support-window guarantee is offered.

There aren't any published security advisories