Sleeptalk

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

Open settings in this computer's browser
sleeptalk settings --open

Sleeptalk 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:

A settings link for your phone
sleeptalk settings --phone

It 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

SectionWhat you can change
AgentSelect the agent, workspace, and supported connection options
Speech serviceThe service that listens and speaks, its key, its models, and its voice
VoiceThe voice and the playback speed
LanguageThe language you speak, and the language of the page
Call deliveryHosted relay or your tailnet for browser calls
Discord setupCreate a Discord bot profile, or finish and lock an existing one
BehaviorReply length, tool narration, and turn taking
KeysEvery 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

OptionWorks fromLimitSetup
Hosted relayAnywhere30 minutes, announced before it endsNothing to install
Your tailnetDevices on your tailnetNoneNeeds Tailscale with HTTPS
This computerThis computerNoneAutomatic
DiscordA Discord voice channelNoneA 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

SettingChoices on the pageStored value
Reply lengthFull, Short answersfull, summarized
Tool narrationSpoken, Keyboard sounds, Silentnarrated, keyboard, silence
Turn takingPatient, Balanced, Snappyrelaxed, 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

Run from your workspace
sleeptalk settings --terminal

The 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.

ControlChoicesEffect
Playback speed0.5x, Normal, 1.25x, 1.5xChanges synthesis speed for the following speech. It does not speed up thinking or tool work.
Tool narrationNarrated, Silent, Keyboard soundsChanges what you hear while the agent works.
Response lengthFull, SummarizedSummarized condenses longer speech; the full answer stays in the transcript.
VoicesThe live service's voices for the call's languageOne tap switches the voice.
Advanced settingsOffers 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.

ProviderRange sentExample
Cartesia0.6–1.50.5× sends 0.6.
Deepgram0.7–1.50.5× sends 0.7.
ElevenLabs0.7–1.21.25× and 1.5× send 1.2.
Local0.5–2.0 for Kokoro and PiperPocket's pinned export speaks at 1×; speed changes do not accelerate it.
OpenRouter, Venice, Groq, Together0.25–4.0All 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.

Example profile values
[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.

FieldDefaultPurpose
policy.endpointingbalancedrelaxed, balanced, or aggressive pause tolerance.
policy.capture.silence_ms450Base silence window, not total response latency.
policy.capture.vad_modehybridCombines Silero and audio-level capture evidence.
policy.capture.vad_confidence0.78Silero speech-confidence threshold.
policy.capture.vad_min_volume0.005Minimum volume for the capture detector.
policy.capture.smart_turntrueAudio-based scoring of uncertain turn endings.
policy.interrupt.modeimmediateoff, soft, or immediate, subject to playback support.
policy.interrupt.min_duration_ms150Minimum sustained speech for an interruption.
policy.interrupt.cooldown_ms1200Suppresses retriggers right after an interruption.
policy.keepalive_interval_s10Quiet 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.