cursor-viewer
A local browser UI for reading through your Cursor AI chat histories — including tool calls, search, and support for exploring backups.
Built with Streamlit. No server, no account, no data leaving your machine.
What it does
- Lists all your Cursor chats grouped by project
- Renders tool calls (file reads, terminal commands, etc.) inline as collapsible sections
- Lets you search across projects and message content
- Supports pointing at a backup of your
.cursordata directory, not just the live one
Install
Requires Python 3.10+. First, get pipx if you don't have it:
macOS
brew install pipx
pipx ensurepath
Linux
sudo apt install pipx # Debian/Ubuntu
pipx ensurepath
Windows
scoop install pipx # or: pip install --user pipx
pipx ensurepath
Then install cursor-viewer:
pipx install cursor-viewer
Then just run:
cursor-viewer
It opens in your browser at http://localhost:8501.
Configuration
The app figures out where your Cursor data lives automatically. If you want to override that:
One-off (flag):
cursor-viewer --cursor-path "/Volumes/Backup/Library/Application Support/Cursor"
Session (env var):
CURSOR_DATA_PATH="/path/to/cursor" cursor-viewer
Persistent default (UI):
Open the Settings panel in the sidebar, enter your path, and hit "Save as default". That writes to ~/.cursor-viewer/config.json and sticks across restarts.
Priority order: flag > env var > saved config > auto-detected default.
Other options
cursor-viewer --help
--cursor-path PATH path to Cursor's data directory
--port PORT port to run on (default: 8501)
Running from source
git clone https://github.com/sahilsasane/cursor-viewer
cd cursor-viewer
uv sync
uv run streamlit run streamlit_app.py
How Cursor stores chats
Cursor keeps chat history in SQLite databases under its data directory:
User/globalStorage/state.vscdb— composer/agent chatsUser/workspaceStorage/<id>/state.vscdb— per-workspace chats and metadata
cursor-viewer reads these directly, read-only, without touching any Cursor internals.
Metadata
Release files for cursor-viewer 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| cursor_viewer-0.1.0.tar.gz | 9.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cursor_viewer-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.0 kB
Release files / cursor_viewer-0.1.0.tar.gz
| Download URL | cursor_viewer-0.1.0.tar.gz |
|---|---|
| Size | 9.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0f8a096165764a58273562046c2c57a979738bad56430f1c4aa074d742ffa39d
|
|
BLAKE2b-256 checksum How to use checksums |
353e2e4af055a0ef541793352f4935fdd5354f043cc2e344231760c79f25b43b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.8
|
Release files / cursor_viewer-0.1.0-py3-none-any.whl
| Download URL | cursor_viewer-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
71f5af2cd8785cf63b953269e6ac91ac317b579dfbb9e8cc1405a28461d2b255
|
|
BLAKE2b-256 checksum How to use checksums |
75608109cd49e9eaba6705d6c1ed8ad4ba01f1b8f5deecc69e8d3bfdf3ed4f04
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.8
|
Security for cursor-viewer 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.