Metadata-Version: 2.4
Name: lystn
Version: 0.2.0
Summary: Listen to AI coding assistant responses via Kokoro TTS.
Project-URL: Homepage, https://github.com/burakayener/Lystn
Project-URL: Repository, https://github.com/burakayener/Lystn
Project-URL: Issues, https://github.com/burakayener/Lystn/issues
Author: Burak Akın Yener
License: Apache-2.0
License-File: LICENSE
Keywords: adhd,claude,claude-code,codex,tts,voice
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Requires-Dist: click>=8.1
Requires-Dist: numpy>=1.24
Requires-Dist: requests>=2.31
Requires-Dist: sounddevice>=0.4.6
Requires-Dist: tomlkit>=0.12
Requires-Dist: websocket-client>=1.7
Description-Content-Type: text/markdown

# lystn CLI

Cross-platform command-line client for the Lystn TTS server. Replaces
the Windows-only PowerShell hook with a Python package that works on
Windows, Mac, and Linux.

## Install

```bash
pipx install -e .          # from this folder, while developing
# or once published:
pipx install lystn
```

`pipx` puts `lystn` on your PATH in an isolated environment — no
conflicts with your other Python packages.

## Configure

```bash
lystn config set server https://api.lystn.space    # cloud server (default)
lystn config set voice af_heart                    # any voice from `lystn voices`
lystn config set speed 1.25                         # playback rate 0.5–3.0
lystn config show
```

The default server is `https://api.lystn.space`. For local dev, point it at
your own box, e.g. `lystn config set server http://127.0.0.1:7878`. Sign in
with `lystn login` (browser Google sign-in saves your key automatically) —
you rarely set `api_key` by hand.

Config lives at:
- Windows: `%APPDATA%\lystn\config.json`
- Mac/Linux: `~/.config/lystn/config.json`

## Use

```bash
lystn test                          # speak "Lystn is connected and working."
lystn speak "Hello there."          # speak the argument
echo "Hello there." | lystn speak   # speak stdin
lystn voices                        # list voices
lystn doctor                        # check server reachable
```

## Wire into assistants

```bash
lystn install
```

Wires Lystn's Stop hook into Claude Code and, when local Codex is present,
into the shared Codex config used by the Codex app, Codex CLI, and Codex IDE
extension. It also adds a branded animated `statusLine` to Claude Code —
non-destructively, so your own custom status line is never replaced. Restart
the assistant, or start a new session/thread, after installing. Every
completed response will be spoken aloud. `lystn uninstall` removes only
Lystn's entries (its hook and its status line).

To target only Codex local surfaces:

```bash
lystn install --codex
```

The hook is fire-and-forget: if the Lystn server is down or the text
is empty, the hook exits silently and doesn't break Claude's UI.

## Commands

| Command | What it does |
|---|---|
| `lystn speak [TEXT]` | Speak text from argument or stdin |
| `lystn hook` | Stop-hook entry (Claude Code / Codex) — reads JSON from stdin |
| `lystn test` | Speak a short connection-test message |
| `lystn login` / `lystn logout` | Browser Google sign-in / clear saved key |
| `lystn voices` | List voices the server offers |
| `lystn doctor` | Print config + server health |
| `lystn devices [--pick]` | List audio outputs; `--pick` saves one |
| `lystn mute` / `lystn unmute` | Silence Lystn / turn it back on |
| `lystn speed [0.5-3.0]` | Set/show playback speed |
| `lystn volume [0-100]` | Set/show volume |
| `lystn statusline` | Print the branded animated status line |
| `lystn config show` | Show current config |
| `lystn config set KEY VALUE` | Update config (`server`, `api_key`, `voice`, `device`, `speed`) |
| `lystn install` / `lystn uninstall` | Wire/unwire Claude Code + detected Codex |

## Requirements

- Python 3.10+
- A reachable Lystn server (defaults to the cloud `https://api.lystn.space`;
  point at a local Kokoro server for dev)
- Audio output device (`sounddevice` handles it cross-platform)
