Metadata-Version: 2.4
Name: lystn
Version: 0.1.1
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: 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 http://127.0.0.1:7878     # local server (default)
lystn config set voice af_heart                    # any voice from `lystn voices`
lystn config set api_key sk_...                    # only needed for cloud server later
lystn config show
```

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 Claude Code

```bash
lystn install
```

Prints a JSON snippet — copy the `hooks` block into
`~/.claude/settings.json`. Restart Claude Code. Every completed
response will be spoken aloud.

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` | Claude Code Stop-hook entry — reads JSON from stdin |
| `lystn test` | Speak a short connection-test message |
| `lystn voices` | List voices the server offers |
| `lystn doctor` | Print config + server health |
| `lystn config show` | Show current config |
| `lystn config set KEY VALUE` | Update config (`server`, `voice`, `api_key`) |
| `lystn install` | Print the Claude Code settings snippet |

## Requirements

- Python 3.10+
- A running Lystn server (local Kokoro for now; cloud server later)
- Audio output device (`sounddevice` handles it cross-platform)
