Configure
Settings
Change a profile's agent, speech, voice, language, call delivery, and behavior from a browser page, the terminal, or the call itself.
Open the settings page
sleeptalk settings --openSleeptalk serves the page on 127.0.0.1 with a one-time link and opens it in this computer's browser. The link opens one session. A copy of it won't work in another browser. The session ends after 30 minutes without use. Press Ctrl-C in the terminal to stop the page.
With no profile named, the page opens the profile this folder last launched, then default, then the first profile. Use --profile <slug> to pick one, or switch with the profile picker in the sidebar. The shipped example profile is never offered.
Open it on a phone
When the computer running Sleeptalk has no browser, such as a VPS, open the same page on your phone:
sleeptalk settings --phoneIt prints a link to https://call.sleep.talk/settings#/settings/.... The link is single use and expires in ten minutes if nobody opens it. The page talks to the host through a sealed channel. Every request, key, voice, check result, icon, voice sample, and Discord detail travels encrypted, and the hosted relay sees only ciphertext. The session ends after 30 minutes without use. Keep the command running while you use the link. Add --json to return a link receipt from a detached server and exit; run the command again for a new link.
An agent gets the same link with sleeptalk host settings-link --json, and sends you the receipt's settings_url. When an agent asks you for a key, its link opens this page on just that request. See set up through an agent.
What the page saves
The page never shows a stored key. A new key you paste is checked with its provider, kept in the private store, and referenced from the profile. Most changes save to the profile at once and apply to the next call.
Sections
| Section | What you can change |
|---|---|
| Agent | Select the agent, workspace, and supported connection options |
| Speech service | The service that listens and speaks, its key, its models, and its voice |
| Voice | The voice and the playback speed |
| Language | The language you speak, and the language of the page |
| Call delivery | Hosted relay or your tailnet for browser calls |
| Discord setup | Create a Discord bot profile, or finish and lock an existing one |
| Behavior | Reply length, tool narration, and turn taking |
| Keys | Every stored key and the profiles using it |
The picker at the top right of every section sets the language you speak. The page shows itself in that language when it can. See language.
Agent
The agent in use comes first, then agents installed on this computer, marked Found on this computer, then the rest. Each card says what the agent is. The choices are Pi, Hermes, Claude Code, Codex, Cursor, OpenClaw (preview), oh-my-pi, and Just a model.
Choose an agent card to configure or switch the integration and workspace. The page checks readiness and reports any missing installation or login. Complete the agent's own login on the runtime host when required. For terminal setup, use sleeptalk settings --terminal. See agent adapters.
Speech service
Each service is a card showing its listening and speaking models, how many voices it has, measured latency where Sleeptalk has measured it, and its free allowance. The info mark explains the allowance in plain words. See speech providers.
Cards are ordered: the service in use, then services whose key was found on this computer, then Cartesia, OpenRouter, Deepgram, and the rest.
Select a card to open it in place:
- API key: paste a key, or use the one found on this computer. A saved key shows as Saved in this computer's private store, with Replace.
- Speech-to-text model and Text-to-speech model: dropdowns with the recommended model marked. Each model shows whether it streams, its price per hour, measured latency, and languages, and warns when it doesn't cover your language.
- Voice: the voices of the chosen speaking model, each with a play button.
- Switch to: checks the key by transcribing a short clip and speaking one line, then points the profile at this service for both listening and speaking.
Local speech has no key. Its settings include model installation and downloads, Kokoro, Piper, and Pocket voices, and Pocket reference-voice creation. The default pair is streaming Moonshine Small and Kokoro. See Local speech.
OpenAI Realtime has a Model choice for GPT Realtime or the separate GPT Live browser preview. Keep your agent selected for workspace and tool work. Their concurrency and interruption behavior differ; see voice modes. GPT Live takes voice and language changes on the next call and disables standalone voice previews.
Voice
This section lists the voices for the current speaking model. The play button plays a recorded sample that ships with Sleeptalk and needs no key. Samples play only in the page's language. When no sample exists, the profile's own key speaks a short line.
To use a voice that isn't listed, paste its ID below the list, or follow Browse voices to the provider's library. To change the speaking model, go to Speech service.
Playback speed offers 0.5×, 1×, 1.25×, and 1.5×. See provider speed limits.
Language
You speak sets the profile's speech language. Choosing one moves the listening model, speaking model, and voice that followed the old language to the new language's recommendation. Models and voices you picked yourself stay when they still cover the new language. The confirmation names what moved.
This page in changes only the page's words. The page is available in English, Spanish, French, German, Italian, Portuguese, Dutch, Japanese, Korean, Chinese, and Hindi. Calls still use the language you speak.
See language support.
Call delivery
| Option | Works from | Limit | Setup |
|---|---|---|---|
| Hosted relay | Anywhere | 30 minutes, announced before it ends | Nothing to install |
| Your tailnet | Devices on your tailnet | None | Needs Tailscale with HTTPS |
| This computer | This computer | None | Automatic |
| Discord | A Discord voice channel | None | A bot, about five minutes |
This computer needs no choice. A call you start in a terminal here opens on localhost with no relay. Discord opens Discord setup, because a bot gets its own profile. On a Discord profile, the relay and tailnet choices aren't used. See call destinations.
Discord setup
The page walks you through creating a bot in the Discord Developer Portal, pasting its token, choosing the server and voice channel, and locking the bot to your Discord user ID. The bot becomes a separate profile that reuses this profile's speech key. The profile needs a speech key first, and Discord voice needs the sleeptalk[discord] extra.
On an existing Discord profile, the page shows whether the bot is locked to you, open to the server, or unfinished, and finishes the missing steps with the token it already has. See Discord.
Behavior
| Setting | Choices on the page | Stored value |
|---|---|---|
| Reply length | Full, Short answers | full, summarized |
| Tool narration | Spoken, Keyboard sounds, Silent | narrated, keyboard, silence |
| Turn taking | Patient, Balanced, Snappy | relaxed, balanced, aggressive |
Short answers ask the agent for three sentences, led by the outcome. Tool narration is what you hear while the agent works. Turn taking is how long a pause counts as the end of your turn. Each setting applies to the next call. See turn taking and tool calls.
Keys
Keys live in the host's private store; the profile only references them. This section lists every stored key, what it is for, and the profiles using it, never a value. Remove unused keys clears the keys no profile uses. It removes them from this computer only; it never revokes them at the provider. It also names keys found elsewhere on this computer, which a service card can use without copying. To replace a speech key, use Replace on its service card. The old key is removed unless another profile uses it.
The section says which store you have. A file store can move into the macOS Keychain or Linux Secret Service with Move keys. Calls then need you logged in to that computer, which is why the file is the default.
Deleting a profile (the page asks first) also removes the keys no other profile uses. See profiles and credentials.
Terminal settings
sleeptalk settings --terminalThe terminal wizard's main menu covers the agent, where it talks, the speech provider and key, and the voice. Its advanced sections cover the spoken language, mixed providers, speech models, tool narration, reply length, terminal audio, Discord details, and runtime options.
The wizard can also change the agent. Both paths may require completing the agent's own login on the host.
A one-launch flag such as sleeptalk --web, --terminal, or --discord picks the surface for that call without changing your default.
During a call
Open the gear menu on the browser call page.
| Control | Choices | Effect |
|---|---|---|
| Playback speed | 0.5x, Normal, 1.25x, 1.5x | Changes synthesis speed for the following speech. It does not speed up thinking or tool work. |
| Tool narration | Narrated, Silent, Keyboard sounds | Changes what you hear while the agent works. |
| Response length | Full, Summarized | Summarized condenses longer speech; the full answer stays in the transcript. |
| Voices | The live service's voices for the call's language | One tap switches the voice. |
| Advanced settings | Offers a link that opens the settings page on your phone. |
Voices is a submenu scoped to the service in use and the call's language. Sleeptalk tries the voice with your saved key first. If the provider refuses it, the current voice stays and the page says why. A voice that works is saved to the profile. More voices opens the full settings page.
Advanced settings and More voices ask the host for a single-use settings link. The call page then shows Open settings; tap it to open the page on your phone, through the same sealed channel as sleeptalk settings --phone. Changes apply to your next call. If the hosted service can't be reached, the host opens the page in its own browser instead; where there is no browser, run sleeptalk settings there.
Cascade local voices can be changed during a call when the needed model is already downloaded. GPT Live voice changes apply on the next call. Speed, narration, and reply length apply to the running call only; set them in settings to keep them. Discord exposes the live controls through /<profile> settings.
Provider speed limits
The speed you pick is one of four steps. Each provider accepts a different range, so Sleeptalk clamps the step when it sends the request. The step shown can be faster or slower than what the provider actually plays.
| Provider | Range sent | Example |
|---|---|---|
| Cartesia | 0.6–1.5 | 0.5× sends 0.6. |
| Deepgram | 0.7–1.5 | 0.5× sends 0.7. |
| ElevenLabs | 0.7–1.2 | 1.25× and 1.5× send 1.2. |
| Local | 0.5–2.0 for Kokoro and Piper | Pocket's pinned export speaks at 1×; speed changes do not accelerate it. |
| OpenRouter, Venice, Groq, Together | 0.25–4.0 | All four steps are sent; models that don't support speed ignore it. |
See the speed mapping.
Profile fields
Merge this into your profile, keeping your existing speech provider, model, voice, and credential references.
[tts]
speed = 1.25
[policy]
narration_style = "narrated"
reply_length = "summarized"
endpointing = "balanced"Merge changes into the existing tables rather than adding duplicate tables. Keep keys in the private store, not in a profile. See profiles and credentials.
Advanced turn-taking settings
These fields are profile configuration only; the settings page doesn't show them. Restart the runtime to load changes. The values below are schema defaults; root configuration and profiles can override them.
| Field | Default | Purpose |
|---|---|---|
policy.endpointing | balanced | relaxed, balanced, or aggressive pause tolerance. |
policy.capture.silence_ms | 450 | Base silence window, not total response latency. |
policy.capture.vad_mode | hybrid | Combines Silero and audio-level capture evidence. |
policy.capture.vad_confidence | 0.78 | Silero speech-confidence threshold. |
policy.capture.vad_min_volume | 0.005 | Minimum volume for the capture detector. |
policy.capture.smart_turn | true | Audio-based scoring of uncertain turn endings. |
policy.interrupt.mode | immediate | off, soft, or immediate, subject to playback support. |
policy.interrupt.min_duration_ms | 150 | Minimum sustained speech for an interruption. |
policy.interrupt.cooldown_ms | 1200 | Suppresses retriggers right after an interruption. |
policy.keepalive_interval_s | 10 | Quiet interval before a long-turn progress cue. 0 disables it. |
With a speech service that listens one turn at a time (OpenRouter, Venice, Groq, Together), the default endpointing uses the tighter silence windows. Set endpointing = "relaxed" if you prefer longer pauses.
Capture, endpointing, and interruption are separate gates. Read turn taking before changing low-level thresholds. Discord profiles also have /<profile> vad status and diagnostic tuning commands for the running bot.
All fields are defined in the configuration schema, and sleeptalk.example.toml documents them.