Skip to downloads

clispeak

Speak text aloud on your own devices. Peer to peer, no server, no account.

Install it on your laptop and your phone, pair them once, and either can say something out loud on the other. Your devices talk to each other directly, encrypted end to end, and there is nothing to sign up for.

It is built so an agent can drive it — which is why it is a command-line tool with a window attached rather than an app with a terminal bolted on.

The clispeak app showing its message history, with a spoken message and a play button.
Everything it said. Anything that arrived while the device was muted or quiet is kept, so you can read or play it later rather than losing it.
The clispeak app showing a space named Main with five paired devices, each marked active now.
Your devices, and only yours. A space is a set of devices that trust each other. Add one by scanning a code; remove it whenever you like.
The clispeak app settings, showing appearance, device name, mute, quiet hours and voice speed.
On your terms. Mute it, give it quiet hours, change the voice and its speed. A device that will not speak tells the sender which setting stopped it.

What people use it for

Your coding agent talks to you

An agent working in your terminal can say “the build finished” or ask a question out loud, on your phone, while you are in another room. This is the reason clispeak exists.

Long jobs that finish while you are away

A test suite, a deploy, a render. Append one command and the machine tells you it is done instead of you checking a terminal every ten minutes.

Read something aloud on another device

Send text from your laptop to a phone in the kitchen, or to a machine across the room. Text to speech, on hardware you already own, without an account.

Alerts you cannot miss

A monitor, a cron job, a wake-up. Spoken aloud rather than added to a pile of notifications, with quiet hours so it respects the time.

How it connects

Encrypted end to end

Devices connect over iroh, which is QUIC — so every connection is TLS 1.3, and it is authenticated against the devices’ own keys rather than a name somebody claimed.

Direct where it can be

Two devices find a direct path most of the time. Where a network will not allow one, the traffic falls back to a public relay that passes the bytes along and cannot read them.

What is visible anyway

Finding each other uses ordinary DNS, so a network can tell that two devices are looking for one another — never what they say. The security notes say so plainly.

Download

Free, and the same build on every platform.

macOS

A disk image, signed and notarised by Apple. One download for both Apple silicon and Intel.

clispeak-macos.dmg

Android

An APK. 64-bit ARM phones only — every phone made since about 2019, and no emulator.

clispeak-android.apk

iOS: coming soon. There is no download yet. When there is, it will speak only while the app is on screen: waking a suspended iOS app needs a push server, and this project deliberately has none.

After you download

Every platform has a moment where it tells you this software is dangerous. None of them mean the download went wrong. Here is the one you will hit.

Windows says “Windows protected your PC”
Choose More info → Run anyway. SmartScreen shows this for any installer without a Windows signing certificate, and clispeak does not have one.
macOS asks before opening it the first time
The app is signed and notarised by Apple. macOS still asks once, the first time you open anything downloaded from the web. Open it and confirm; you will not be asked again.
Android will not install the APK until you allow it
Your browser will offer to take you to Install unknown apps; the permission is granted per app, so allowing your browser does not allow anything else.
The download can sit at 100% for a while
It says Downloading… with the full size already shown, and nothing appears to happen. Give it a moment — the file has arrived and your phone is checking it. If you would rather not wait, it is usually already sitting in your Files app under Downloads, and tapping it there works.
Android says “you can’t install this app on your device”
That message names nothing, so here is what it means: the APK is arm64-v8a only. It runs on any phone made since roughly 2019 and on no emulator. If you are testing in an emulator, that is the reason.
Linux needs Flatpak
Fedora, Linux Mint and SteamOS ship it already; on Debian, Ubuntu and Arch it is one package away. Then: flatpak install --bundle ./clispeak-linux.flatpak

Pair two devices

One install does nothing on its own. Pairing is what makes it useful, and it takes about a minute.

  1. 1. Install clispeak on both devices and open it.
  2. 2. On the first, open Spaces and choose Add a device. You get a code and a QR.
  3. 3. On the second, scan the QR or paste the code. Confirm the device name it offers.
  4. 4. Say something. Open Speak, pick the other device, type, and send — it tells you what each device did with it. From a terminal, the same thing is clispeak --to Phone "it works".

An invite carries the space it was made for, so scanning it joins the one you asked for rather than whichever happened to be selected. An invite lasts five minutes and works once — if you go and make a coffee, make a new one.

For agents

This is the reason the project exists. An agent working on your machine can tell you something out loud instead of writing to a terminal you have walked away from.

$ clispeak devices
Laptop           5dc736e3b1b945e3  (this device)
Phone            700945f4007d3db5

$ clispeak --to Phone "the build finished"
  Phone            spoken       2.3s

What makes it drivable rather than merely scriptable: distinct exit codes, so a caller can tell “muted” from “unreachable”; errors that carry a fix rather than a diagnosis; and a receiver that reports a reason instead of swallowing a failure. A device that will not speak says which setting stopped it.

Setting it up for your agent

clispeak ships a skill: a file that tells an agent when speaking is worth doing, how to name itself so you know who is talking, and what each exit code means. Two ways to install it, and neither needs you to copy anything by hand.

  1. 1. Install clispeak on the machine your agent runs on

    The app installs the clispeak command onto your PATH the first time it opens. Open a new terminal afterwards — one that was already open keeps the environment it started with.

  2. 2. Install the skill

    From the terminal:

    clispeak skill --install

    That writes it to ~/.claude/skills/clispeak/SKILL.md, where Claude Code looks. Or open the app, go to Settings, and press Install — the same file, and it tells you if the copy on disk has fallen behind the app.

    Keeps its skills somewhere else? clispeak skill with no flags prints it, so you can put it wherever your agent reads from.

  3. 3. Pair the device you want to be spoken to

    Usually your phone — see pairing. Then tell your agent who to talk to, in whatever words you like: “speak to me on my phone when a long job finishes”. The skill covers the rest.

Read the skill before you install it — it is a text file, and it is short.

Tell it how you want to be interrupted

An assistant that reads every thought aloud gets muted within a day, and then it cannot reach you at all. So the useful thing is not teaching it to talk — it is telling it when to. You do that once, by saying it, and clispeak remembers.

Just talk to it. “Use my phone.” “Only tell me if something breaks.” “Stop telling me about builds.” Ask it to set clispeak up and it will ask you a few short questions instead. Nothing to configure and no file to edit.

Call me: Patrick
Speak on: my Phone
How much: keep it short out loud, put the detail on screen

Say something when
  1. a long job finishes and I have walked away
  2. you are stuck and need an answer from me

Say the word at the start of a chat

New conversation, one nudge: tell your assistant you want to use clispeak, or just ask it to say something out loud. That is what makes it pick your settings up. From then on it has them for the rest of the chat — you only do this once per conversation, not once per message.

Left alone in a chat where clispeak never comes up, it does nothing at all. That is on purpose. It should not be reaching into conversations that have nothing to do with it.

It sticks

Tomorrow’s chat knows it. So does a different assistant, if you switch or use more than one. You should not have to say it twice. What you told it is kept on your computer, not in one assistant’s head.

Two things it will not let slide

Tell it to stay quiet and it stays quiet — it cannot talk itself into an exception. And every message says who it came from, so a voice out of your pocket never leaves you wondering which assistant that was.

The rest is up to it. Say “never mention client names” and it will try. But that one is a promise, not a lock — and we would rather say so than let you assume otherwise.