
Sleeptalk
Built for voice. Keep talking while your agents work.
Talk to Claude Code, Codex, Hermes, and other agents by voice.
Hand off long-running tasks, keep discussing ideas, and steer several background workers
without waiting for each task to finish. Open source, with cloud or local speech.
Website · Get started · Docs · Your keys · Security
Features
- Keep talking while work runs. Hand research, builds, and tests to background workers. Ask for progress, add instructions, or start another task while the conversation continues. Three workers run at once by default on eligible Cascade calls; more queue. See background workers.
- Bring your own agent. Use Claude Code, Codex, Hermes, pi, Cursor, OpenClaw, or a custom integration (preview). Your agent keeps its tools and memory. Or use just a model for conversation without tools.
- Talk from your phone or computer. Open a browser call, use your terminal's microphone, or join a Discord voice channel. Browser calls work on the host, over your tailnet, or through a single-use hosted link.
- Cloud or local speech. Choose a speech service or run English speech on the host with no speech key. Reuse a compatible key when you choose; keys stay in your host's private store. See Local speech.
Voice for work that takes time
For example: “Research these two options in the background.” Then: “While that runs, help me think through the tradeoffs.” Later: “How is the research going?” Workers report back through the same voice, with links and details in the call's text output. Name a job when you want to change or cancel it.
This is a workflow for long-running tasks during a call. Jobs currently end with the call; they do not survive hangup. Available controls depend on the agent and voice route. Start with background workers.
Get started
Install from your terminal. On macOS or Ubuntu with Python 3.11 or newer, open a terminal in your project and paste:
python3 -m venv ~/.venvs/sleeptalk
source ~/.venvs/sleeptalk/bin/activate
python -m pip install sleeptalk
sleeptalk
This installs Sleeptalk from PyPI and opens setup. No Git or Node.js is needed.
The virtual environment keeps the install separate from your system Python; in a new terminal, activate it again with
source ~/.venvs/sleeptalk/bin/activate, then run sleeptalk from your project.
If you already have a Python 3.11+ virtual environment active, you can use just
the python -m pip install ... and sleeptalk lines.
If you need Python installed too, expand Other installation options below.
Or ask your agent. Open it in the project you want to use. It needs to run commands on the Mac or Ubuntu host where Sleeptalk will run and have permission to install software. You need a browser on that computer or your phone.
Help me set up Sleeptalk for this project. Read https://github.com/sleeptalklabs/sleeptalk and follow its installation instructions if needed. Keep my current project as the workspace.
Then follow `sleeptalk host --help` and check that my agent is ready. Ask which device I'll call from. Use the private settings page for speech choices and credentials; ask before reusing an existing key, and never request keys in chat.
Once setup is ready, start one browser call and give me the link. Help me verify that I can speak and hear a response.
Your agent checks your setup, asks for any missing choices, and guides you to your first call. Agent login and local model downloads may need additional steps. The agent setup guide covers installation, workspace selection, readiness checks, and phone versus same-computer calls.
Other installation options · Python installer and release bundles
On Ubuntu, if the pip quickstart reports that venv or ensurepip is missing,
install python3-venv with your package manager, or use the installer below.
Download the wheel (.whl), install.sh, and
constraints.txt from the
latest release into
one folder. In that folder, run:
sh install.sh --constraints constraints.txt ./sleeptalk-*.whl
The installer brings uv and Python if needed. Use the full command path it prints, or open a new terminal if it changes your PATH. Then switch to the project your agent should work in:
cd /path/to/your/project
sleeptalk
This installs the command without a source checkout, Git, or Node.js. Only the extras you select are installed; the constraints keep dependencies at the versions tested for that release. Your selected agent may have its own runtime requirements.
To try the development version, install from source (requires Git). Choose a separate destination for Sleeptalk's source, then return to your own project before setup:
git clone https://github.com/sleeptalklabs/sleeptalk.git /path/to/sleeptalk-source
sh /path/to/sleeptalk-source/scripts/install.sh
cd /path/to/your/project
sleeptalk
Replace the example paths with your own. See Contributing for development setup.
The pip quickstart resolves current compatible dependencies. Use the wheel bundle and its constraints when you want the exact versions tested for a release.
sleeptalk opens the settings page in your browser. Setup there offers any speech-capable key already on the machine, or asks for one, plays a few voices to choose from, and asks where you want to talk; then you start a call from the page. With no browser on the machine (over SSH, or a server with no display), the same setup runs in the terminal.
Choose how voice works
| Mode | Conversation and work | Where to start |
|---|---|---|
| Cascade, with cloud or local speech | Your own agent handles the conversation. Separate listening and speaking models add voice; eligible agents can run several background workers. | Voice modes |
| Local speech | Moonshine listens and Kokoro, Piper, or Pocket TTS speaks on the host, with no speech key. Your agent can still use a cloud model; use a local model as well for an offline call. English only. | Local speech |
| GPT Realtime | OpenAI handles spoken conversation and hands files, tools, and current information to your configured agent. One specialist task at a time. | OpenAI Realtime |
| GPT Live — browser preview | Continuous listening and speech, with your configured agent doing specialist work. A separate implementation from GPT Realtime; eligible agents can run background workers while conversation continues. | GPT Live |
Local speech is a Cascade option. Browser delivery—same machine, tailnet, or hosted link—is a separate choice from the speech mode. See the support matrix for surface and preview limits.
How it works
you ──voice──▶ browser · tailnet · Discord · terminal
│
▼
Sleeptalk on your machine
├─ listens (your speech service, or local)
├─ asks (your agent: Claude Code, Codex, Hermes, pi, …)
└─ speaks (your chosen voice, streamed as the reply is written)
│
▼
you ◀──voice── the reply
The hosted relay at call.sleep.talk only introduces your phone to your machine: it passes a short-lived ticket and signaling, and settings travel through it as ciphertext it cannot read. On a tailnet it isn't used at all.
Where it runs
| Surface | How | Limit |
|---|---|---|
| Browser call | A single-use link through the hosted relay | 30 minutes, announced before it ends |
| Your tailnet | --tailnet: published on your Tailscale network, no relay, no TURN |
None |
| Same machine | The browser on the host, loopback only | None |
| Discord | A bot in one voice channel, locked to your account | None |
| Terminal | Your microphone and speakers on the host | None |
See Calls over your tailnet and Discord setup.
Speech services · who listens, who speaks, what it costs
| Service | Listens with | Speaks with | Note |
|---|---|---|---|
| Deepgram | Nova-3, streamed | Flux voices | Streams words as you say them; $200 free credit, no card |
| Cartesia | Ink, streamed | Sonic voices | The default pick; free tier, no card |
| ElevenLabs | Scribe | ElevenLabs voices | The biggest voice library |
| OpenRouter | Parakeet | Grok Voice; Flux voices free | The key your agent may already have |
| Venice | Parakeet | Grok Voice | Prepaid credits |
| Together | Parakeet | Cartesia Sonic | Cents an hour to listen |
| Groq | Whisper | Orpheus | Fast, cheap listening |
| OpenAI Realtime / GPT Live | Hears you directly | The selected OpenAI voice model | Conversation plus handoff to your agent. These use separate routes with different controls; GPT Live is a browser preview. See voice modes |
| Local | Moonshine Streaming | Kokoro, Piper, or Pocket TTS | No speech key; English, on the host. Pocket's bundle also carries a non-commercial notice. See Local speech |
Every service has a golden default voice and a few curated picks; any voice ID from its library works, and you can change voices mid-call from the settings wheel. Streaming services decide the end of your turn from the audio itself; the aggregators listen one turn at a time, so replies start a beat later there. See Voice from a key you already have and Voices.
Your keys · where they live and where they go
Sleeptalk has no account and no server that holds keys. Every key you enter is checked once with its provider (a short clip and one spoken line, which uses a little credit), then written to a private store on the machine that runs Sleeptalk: by default a file only your user can read, or the macOS Keychain or Linux Secret Service if you install sleeptalk[credentials] before the first key is saved. The settings page's Keys page says which. Profiles hold a reference to that store, never the key.
There is one settings page. On your own machine Sleeptalk serves it itself; on a phone (for a host with no browser) it opens through an encrypted channel to the host, and the hosted relay passes ciphertext it cannot read. Sleeptalk never logs a key and sends it to nobody but the provider that issued it. See Where your keys live.
For agents · the setup recipe and its receipts
Start with Set up through an agent. After installation,
sleeptalk host --help describes the available setup commands and their JSON
receipts. Pass the intended workspace and the selected agent explicitly.
host ensure checks readiness and never starts a call. When it offers an
existing speech key, ask the user before rerunning with --reuse-key. Otherwise,
host input link returns a single-use private setup page for speech choices
and credentials. Send the link to the user without opening it yourself, then
check the completion receipt before starting a call.
host settings-link --json returns a private link to the full settings page.
Use it to review the voice and delivery choice. The start receipt names the
actual delivery: local, tailnet, or hosted relay. A join link alone does not
prove audio works; ask the user to verify a spoken response.
Everyday commands
sleeptalk # the settings page: set up, pick a profile, start a call
sleeptalk --web | --terminal | --discord # start this folder's profile there, skipping the page
sleeptalk run --config ~/.sleeptalk/profiles/<slug>.toml # start a saved profile by path
sleeptalk doctor --config ~/.sleeptalk/profiles/<slug>.toml # validate everything, name each problem
sleeptalk service install <slug> # launchd / systemd persistence
sleeptalk settings # change agent, keys, voice, destination (the same page)
sleeptalk settings --terminal # the same, in the terminal
sleeptalk settings --phone # the same page, on your phone
Profiles and state live in ~/.sleeptalk (or $SLEEPTALK_HOME). A repo that keeps its own config/profiles/ is used only after sleeptalk trust in it, so a cloned project can never choose your agent or endpoints.
Turn-taking, endpointing, fillers, barge-in, and reply length live under [policy] in the profile TOML; sleeptalk.example.toml documents every field.
Requirements
Current macOS or Ubuntu, Python 3.11 or newer. The installer brings uv and Python and installs the wheel into an isolated tool environment. A source checkout uses the web extra, so uv tool install ./sleeptalk[web] from the parent folder does the same by hand. Discord voice needs libopus (brew install opus or sudo apt install libopus0). Terminal calls on Linux need PortAudio (sudo apt install libportaudio2).
The support matrix is the release contract. Other Linux distributions are unverified. Local speech is English and CPU-only; streaming Moonshine has Apple silicon and Linux x86-64/ARM64 wheels, and Intel Macs use Moonshine Tiny. A phone link through call.sleep.talk needs outbound UDP from the host. A host that cannot send UDP uses --tailnet or the browser on that machine. sleeptalk adapter versions names the exact agent releases the protocol checks cover. Bring-your-own agents stay preview.
Repository
| Directory | What it is |
|---|---|
sleeptalk/ |
The Python package and CLI |
tests/ |
Package tests (tests/runtime/ holds the transport and session suites) |
rendezvous/ |
The hosted link service (Cloudflare Worker) and the browser call and settings pages |
examples/ |
Runnable adapter and session examples |
docs/ |
Guides, contracts, and decision records. Start at docs/README.md |
CONTRIBUTING.md covers tests, the release proof, and the page preview tool. Security reports go through SECURITY.md.
MIT licensed · by sleep.talk
Metadata
Release files for sleeptalk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sleeptalk-0.1.0.tar.gz | 18.3 MB | With provenance | Details for sleeptalk-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sleeptalk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for sleeptalk-0.1.0-py3-none-any.whl |
Total release size: 36.2 MB
Release files / sleeptalk-0.1.0.tar.gz
| Download URL | sleeptalk-0.1.0.tar.gz |
|---|---|
| Size | 18.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ed7d2c29ffcba4754f675e46a96caa4b2c1b729c5ee48b4bcb994f5171a345cc
|
|
BLAKE2b-256 checksum How to use checksums |
bf0339ace3415ece00070ec1ab3a2fb38c9625ecc517e1955a8d5af753e9ca23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logRelease files / sleeptalk-0.1.0-py3-none-any.whl
| Download URL | sleeptalk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 17.9 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
567a7bd3012714f851988ac00348860404fc8bcdbc320c76693bfdf1314d0a86
|
|
BLAKE2b-256 checksum How to use checksums |
e444b1dc5475ad1994545e98c32be152f4983419a7992d909e07cfd8229462b9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logSecurity for sleeptalk 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for sleeptalk-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.