A terminal UI for fuzzy-searching, browsing, and resuming Kiro CLI conversations
Project description
kiro-cli-history
A terminal UI for fuzzy-searching, browsing, and resuming Kiro CLI conversations.
The problem
Kiro CLI has great built-in conversation persistence — it saves your sessions and lets you resume them with --resume and --resume-picker. However, these are scoped to the directory where the session was started. If you work across many projects and directories, finding a specific past conversation means remembering which folder you were in at the time.
kiro-cli-history complements Kiro CLI's native persistence by adding global fuzzy search across all sessions — regardless of which directory they were started in. It searches the full content of every message exchanged, not just session titles.
What it offers
- Global search — find conversations across all directories, not just the current one
- Full-text fuzzy search — searches every message you and Kiro exchanged, not just titles
- Conversation preview — read through the full exchange with markdown rendering before deciding to resume
- One-key resume — press
Ctrl+Rto jump into Kiro CLI and continue the conversation - Copy to clipboard — press
Ctrl+Yto copy an entire conversation - All session formats — reads all three Kiro CLI storage versions (v1 SQLite, v2 SQLite, v3 JSONL), covering both
--classicand new TUI modes
Read-only
This tool never writes to or modifies your Kiro CLI session data. It only reads from:
~/.kiro/sessions/cli/(JSONL sessions)~/Library/Application Support/kiro-cli/data.sqlite3(SQLite sessions, opened in read-only mode)
Install
Requires at least Python 3.10.
With pipx:
pipx install kiro-cli-history
With uv:
uv tool install kiro-cli-history
With pip:
pip3 install kiro-cli-history
Usage
kiro-cli-history
Run it from anywhere. It searches globally.
Keyboard shortcuts
| Key | Action |
|---|---|
/ |
Focus search bar |
j / k or arrows |
Navigate sessions |
Ctrl+R |
Resume the highlighted session in Kiro CLI |
Ctrl+Y |
Copy conversation to clipboard |
Ctrl+F |
Focus search bar |
Esc |
Clear search / Quit |
Ctrl+C |
Quit |
Searching
Type in the search bar to fuzzy-search across:
- Session titles
- Working directories
- Full conversation content (every message exchanged)
Search is case-insensitive and covers all session formats.
Text selection
Hold Option (Alt) while dragging to select text from the preview pane. Or press Ctrl+Y to copy the full conversation to clipboard.
Configuration
Settings are stored in a JSON file managed via the config subcommand — no need to edit it by hand.
kiro-cli-history config show # print all settings and the config file path
kiro-cli-history config get scroll_top
kiro-cli-history config set scroll_top true
Available settings:
| Key | Default | Description |
|---|---|---|
scroll_top |
false |
Show the start of a conversation in the preview pane instead of jumping to the most recent messages |
The config file lives at the platform's standard config location (e.g. ~/Library/Application Support/kiro-cli-history/config.json on macOS).
How it works
Kiro CLI stores conversations in three formats depending on the version and mode:
| Format | Location | Used by |
|---|---|---|
| v3 (JSONL) | ~/.kiro/sessions/cli/*.json + *.jsonl |
kiro-cli --classic |
| v2 (SQLite) | ~/Library/Application Support/kiro-cli/data.sqlite3 |
New TUI mode (kiro-cli) |
| v1 (SQLite) | Same database, conversations table |
Legacy |
kiro-cli-history reads all three and presents them in a unified view. Each session shows:
- Title — first message or auto-generated title
- Directory — where the session was started
- Date — last activity (e.g., "7 Apr 2026")
- Message count — total exchanges
- Duration — elapsed time
- Credit usage — total credits spent on the session (JSONL/v3 sessions only — older SQLite sessions don't record this)
How this complements Kiro CLI
Kiro CLI's native --resume and --resume-picker work well when you know which directory a session was started in. kiro-cli-history is a companion tool for when you need to find a conversation but don't remember where it happened — it gives you a global view with full-text search.
--resume-picker (native) |
kiro-cli-history |
|
|---|---|---|
| Scope | Current directory | All directories |
| Search | Browse by title | Full-text across all messages |
| Preview | Title + message count | Full conversation with markdown |
Platform
Currently mainly macOS (uses pbcopy for clipboard, macOS-specific paths).
Community PRs for Linux/Windows support are welcome.
Contributing
Contributions are welcome! See CONTRIBUTING.md for the development setup and quality checks. Commits to the default branch follow Conventional Commits, and releases are automated with release-please — see CHANGELOG.md for the release history.
Credits
Inspired by raine/claude-history — an excellent fuzzy-search tool for Claude Code conversations. If you use Claude Code, check that out.
Forked from prabhu-g/kiro-cli-history — thanks to Prabhu for the initial implementation!
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 kiro_cli_history-0.2.1.tar.gz.
File metadata
- Download URL: kiro_cli_history-0.2.1.tar.gz
- Upload date:
- Size: 15.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fd1e3f0d966feec90f14156e822337f95f4c7c276cbf28ffb14effd6a32499f
|
|
| MD5 |
173e690b9d23cc48b070506d47c610ef
|
|
| BLAKE2b-256 |
bc48928c94a2f112509a8f206f2f0ace83d9ec61fe7f3f71b076ba884f190697
|
Provenance
The following attestation bundles were made for kiro_cli_history-0.2.1.tar.gz:
Publisher:
publish.yaml on mxmehl/kiro-cli-history
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kiro_cli_history-0.2.1.tar.gz -
Subject digest:
6fd1e3f0d966feec90f14156e822337f95f4c7c276cbf28ffb14effd6a32499f - Sigstore transparency entry: 2257206228
- Sigstore integration time:
-
Permalink:
mxmehl/kiro-cli-history@4b2a650f871c3d85d3e2618d34a9691e6354ea36 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/mxmehl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@4b2a650f871c3d85d3e2618d34a9691e6354ea36 -
Trigger Event:
release
-
Statement type:
File details
Details for the file kiro_cli_history-0.2.1-py3-none-any.whl.
File metadata
- Download URL: kiro_cli_history-0.2.1-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a93504ad4ace251cf696d8748099de30383091a8645f1fa430c67cb635544f6
|
|
| MD5 |
69f373346751f93dd64f820aa1819398
|
|
| BLAKE2b-256 |
851b930d5012b1cc4c08e3bf65a3f62e96b057267f1410a2a864ca2c4fa69dcf
|
Provenance
The following attestation bundles were made for kiro_cli_history-0.2.1-py3-none-any.whl:
Publisher:
publish.yaml on mxmehl/kiro-cli-history
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kiro_cli_history-0.2.1-py3-none-any.whl -
Subject digest:
5a93504ad4ace251cf696d8748099de30383091a8645f1fa430c67cb635544f6 - Sigstore transparency entry: 2257206241
- Sigstore integration time:
-
Permalink:
mxmehl/kiro-cli-history@4b2a650f871c3d85d3e2618d34a9691e6354ea36 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/mxmehl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@4b2a650f871c3d85d3e2618d34a9691e6354ea36 -
Trigger Event:
release
-
Statement type: