A quiet listening room for your thinking sessions with Claude
Project description
kissa
A jazz-kissa for thinking sessions — a TUI for managing Claude Code thinking conversations. It drives the friction between "a fleeting idea" and "a searchable note" down to zero.
Install
uv tool install kissa # or: pipx install kissa
# not on PyPI yet? install from git:
uv tool install git+https://github.com/yiochou/kissa
Prerequisites: a logged-in Claude Code (credentials in ~/.claude are shared) or an
ANTHROPIC_API_KEY in the environment. No Node.js needed — the SDK bundles the
claude binary (which is why the install weighs in around 250 MB).
Run
kissa # open the TUI
kissa "some topic" # quick capture: start a session directly
kissa --debug # write debug logs to the log directory
Keybindings
| Key | Action |
|---|---|
| n | New session (enter a topic → auto-sends the opening prompt) |
| b | Branch the current session (fork, inherits full history) |
| e | End (confirm, then sends the end instruction; approve the draft in the chat pane) |
| x | Archive (guarded by end status and completion-signal tier) |
| q | Quit (sessions persist and resume on next launch; see limitations below) |
Completion Signal Protocol
Want to plug in your own instructions (e.g. a personal slash command)? Have it emit this on its own line once the note is saved:
[kissa:saved <absolute path to the note file>]
kissa uses this to confirm the note was saved (archiving proceeds directly and shows the path). It also works without it — archiving then falls back to a plain confirmation dialog. See the design doc for the full contract.
Note: the marker must be emitted within a single message, and the path must not contain ] — the marker is parsed per-message with a line-anchored regex.
Configuration
- Profiles:
profiles.yamlin the config directory (location is OS-dependent; override withKISSA_CONFIG_DIR) - State:
state.jsonin the data directory (override withKISSA_STATE_DIR) - Default notes location:
~/Documents/kissa(change the instruction text in profiles.yaml)
Known Limitations
- Chat transcripts are display-only and not persisted: after a restart the chat pane starts empty, though the underlying session still resumes with full context (planned for V2).
- A dead session id isn't auto-flagged as stale; it only surfaces as an error on the next turn (you can archive it directly).
- The n/b/e/x/q keys only work when the input box isn't focused (Tab switches focus).
Development
uv run pytest # unit + Pilot tests (no real SDK calls)
uv run ruff check . && uv run mypy src # lint + type check
uv run python scripts/smoke_sdk.py # manual SDK integration check
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kissa-0.1.0.tar.gz.
File metadata
- Download URL: kissa-0.1.0.tar.gz
- Upload date:
- Size: 89.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c896a1291276788b544b9a965859a56d0e59313a080c7ffedd2cfa73a22f63d4
|
|
| MD5 |
38903c82d93b2c391d87d351481f73cb
|
|
| BLAKE2b-256 |
484397252759d19c1e55d7569cf35645d93fc41a856425ea45329b4c49fb9b4c
|
File details
Details for the file kissa-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kissa-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.27 {"installer":{"name":"uv","version":"0.11.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e9984d5e1633449f5fe0bc4856c60c288918720b9204d1fa4aca5746755fb0a
|
|
| MD5 |
c212579f58763dfe84047d6d835ac0e6
|
|
| BLAKE2b-256 |
b4a89a0e1d07e9ed1aff2dee79689e7c0b095232e7559ea1eb5922bd4d64c29a
|