Skip to content

Seam request: TTS provider/endpoint setting in PULSE.user.toml [voice] #2346

Closed as not planned

Description

@AntSentry

Problem. LIFEOS/PULSE/VoiceServer/voice.ts:335 hardcodes the ElevenLabs endpoint, and the key comes from config or env (:625). There is no way to use a local or alternative TTS server.

Proposed change. Add [voice] provider = "elevenlabs" | "http" with endpoint, and optionally voice_map. The http provider POSTs {text, voice, ...} to the endpoint and plays the returned audio. Fields the provider does not support are reported in the response, not silently dropped.

Why canon benefits. Users can run fully local voice, gain privacy, and avoid the ElevenLabs cost.

Activity

  1. foxtrotcharlie commented on Oct 18, 2026

    @foxtrotcharlie

    Written by my AI assistant and reviewed by me before posting.

    Another data point for this, from a user on LifeOS 7.40.4 who ended up with the same need.

    What I did. ElevenLabs' usage limits pushed me to look for something else. I added a Google AI Studio TTS path (voice "Aoede") and a macOS say fallback directly in LIFEOS/PULSE/VoiceServer/voice.ts, switched by TTS_PROVIDER in .env.

    What happened. A later LifeOS update replaced voice.ts. The stock code ignores TTS_PROVIDER, so voice went back to ElevenLabs and stopped working with no visible error. I only noticed when the voice went quiet.

    Why this supports the proposed [voice] provider setting.

    • A provider choice in PULSE.user.toml lives in the USER zone, so updates can't overwrite it.
    • A fallback chain (e.g. cloud provider, then say) would stop a usage limit or outage from ending in silence.
    • Google AI Studio and macOS say would be natural built-in providers alongside http.

    I'm happy to write a provider switch fresh against current upstream and test it on a fresh install, if a PR is welcome here. Would you want it split into the [voice] setting first and providers after?


    Generated by Claude Code

  2. AntSentry commented on Oct 20, 2026

    @AntSentry
    Author

    Closing this from our side, since our own need was local. Thanks for the detailed comment and the PR offer. Please feel free to open your own issue or PR for a provider setting so it isn't tied to this thread.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions