Skip to main content


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

CI Python 3.11+ macOS and Linux MIT

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)

Source distribution for sleeptalk 0.1.0
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)

Table of built distributions (wheels) for sleeptalk 0.1.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

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

Select from 2 files

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 log

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

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page