Skip to main content

Global conversation index and query tool for Claude Code. SQLite-backed full-text search, tool-call analytics, session inspection.

Project description

convo

CI OpenSSF Scorecard Python PyPI version License

convo is independently maintained and is not affiliated with, endorsed by, or sponsored by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic; this project simply reads files Claude Code writes to your local filesystem.

Index Claude Code session JSONLs into a local SQLite database, then search, inspect, snapshot, and analyze the result. Covers the intake pipeline, the storage layer, the read surface (info, search, inspect, snapshots, restore --latest), analytics (stats, summary, diff), and discovery commands (projects, tools, sessions).

Install

Three install paths, in priority order. All require Python 3.12+. Verify with convo --version after installing.

1. Claude Code plugin (recommended)

Inside Claude Code:

/plugin marketplace add TracineHQ/plugins
/plugin install convo@tracine

This installs convo from the unified TracineHQ plugin catalog. The same marketplace also hosts guard; once the marketplace is registered you can install either with one command. See What you get when you install the plugin for the full surface.

Standalone alternative (skip the catalog and install convo directly from this repo):

/plugin marketplace add TracineHQ/convo
/plugin install convo@tracinehq

2. PyPI

The PyPI distribution is tracine-convo; the installed CLI command is convo.

For end-users:

pipx install tracine-convo

For uv users:

uv tool install tracine-convo

For one-shot use without installing globally:

uvx --from tracine-convo convo --help

3. From source (fallback)

git clone git@github.com:TracineHQ/convo.git
cd convo
uv tool install .

Use this path if you want to track main directly or hack on convo locally.

What you get when you install the plugin

Installing convo as a Claude Code plugin (path 1 above) wires up three things on top of the CLI:

Auto-index after every session. A SessionEnd hook runs convo index when each Claude Code session ends, so search results stay current without manual upkeep. Idempotent and fast (sha256-skipped); no-ops gracefully if convo isn't on PATH.

Nine slash commands available inline in Claude Code:

  • /convo:search <query> -- FTS5 search over messages, tool calls, and tool results. Default --limit 10.
  • /convo:summary [--since SPAN] -- activity dashboard (tools, commands, sessions, files, model). Defaults to 7 days.
  • /convo:diff [--since SPAN] -- current vs previous window comparison with deltas. Defaults to 7 days.
  • /convo:inspect <session-id-prefix | --latest> -- full message timeline for one session.
  • /convo:stats -- tool-call frequency and error rates across all indexed sessions.
  • /convo:info -- DB overview (row counts, last index time, top projects, snapshots).
  • /convo:projects -- list indexed projects with session counts.
  • /convo:tools -- list tool names with call counts.
  • /convo:sessions -- list recent sessions with timestamps and message counts.

A searching-conversation-history skill Claude itself can invoke when you ask history-recall questions like "did I solve this before?", "what was that fix for X?", or "summarize last week". The skill calls convo search / convo summary with --json, parses the result, and surfaces matched session IDs and excerpts back to you.

Quickstart

Once convo is on your PATH:

convo index                          # populate from ~/.claude/projects/
convo info                           # quick overview: row counts, projects, last index
convo search "kafka" --since 7d      # FTS5 over messages, tool calls, tool results
convo summary --since 7d             # tool/command/session/file/model dashboard
convo inspect <session-id>           # use a prefix from the search hits
convo snapshots                      # list backup snapshots

convo info looks like this on a fresh DB:

schema_version   2
db_size          156.0 KiB
last_indexed_at  2026-05-01T04:57:28+00:00

row counts:
  source_files  1
  sessions      1
  messages      5
  tool_calls    1
  tool_results  1

top projects by sessions:
       1  /workspace/example

snapshots:
  dir          ~/.claude/convo-backups
  count        0
  total_bytes  0 B

Set CONVO_DB to point at a custom DB path; CONVO_BACKUP_DIR for snapshot location; CLAUDE_PROJECTS_DIR to override the default ~/.claude/projects/.

Available commands

  • convo index [--full] [--projects-dir PATH] [--dry-run] [--json] -- walk ~/.claude/projects/<slug>/*.jsonl and populate the database. Idempotent: skips files whose sha256 hasn't changed. --full re-indexes everything.
  • convo info [--json] -- schema version, row counts per table, last index time, top 5 projects by session count, snapshot directory size.
  • convo search "<query>" [--since SPAN] [--project P] [--tool T] [--limit N] [--json] -- FTS5 search over messages, tool calls, and tool results. SPAN accepts 7d / 24h / 90m / 30s. Query supports FTS5 prefix exclusion (-excluded); +required AND-syntax is not supported in v2.
  • convo inspect <session-id> | --latest [--json] [--full] -- session timeline with inline tool calls. Accepts a UUID prefix; ambiguous prefixes list candidates. --latest resolves the most recently started session. --full dumps message content verbatim (default truncates to 200 chars per message).
  • convo snapshots [--json] -- list snapshot files with name | size | age columns, newest first.
  • convo backup <dest> -- snapshot the database to an explicit path (VACUUM INTO)
  • convo backup --auto -- timestamped snapshot to the snapshot directory
  • convo restore <src> -- atomic-swap restore from a snapshot file (snapshot is preserved)
  • convo restore --latest -- shorthand for restoring the newest snapshot in $CONVO_BACKUP_DIR.
  • convo stats <family> [--since SPAN] [--project P] [--json] -- analytics families: tools, commands, sessions, files, model, hooks.
  • convo summary [--since SPAN] [--project P] [--json] -- composite of all six families in one report.
  • convo diff [--since SPAN] [--project P] [--json] -- current vs previous window comparison with deltas. Default span 7d.
  • convo projects [--json] -- list indexed projects with session counts and last-seen timestamps.
  • convo tools [--json] -- list tool names with total call counts and last-seen timestamps.
  • convo sessions [--since SPAN] [--project P] [--limit N] [--json] -- list recent sessions with project, message count, and timestamps.

The JSON envelope shape for every command is documented in JSON-ENVELOPE.md.

Storage

The convo database lives at ~/.claude/convo.db by default. Override with CONVO_DB=... if you want isolation from Claude Code's own state directory or want to keep multiple databases. Snapshots default to a convo-backups/ sibling of the resolved DB; override with CONVO_BACKUP_DIR=....

  • convo backup <dest> -- write a VACUUM INTO snapshot to <dest>.
  • convo backup --auto -- write a timestamped snapshot to <CONVO_DB parent>/convo-backups/. Snapshots are append-only; manage history yourself (e.g. find ... -mtime +30 -delete) or run just snapshots-clean from a contributor checkout.
  • convo restore <src> -- atomically replace the live DB with a copy of <src>. The snapshot file is preserved.

Snapshots use microsecond-precision UTC timestamps so concurrent calls cannot collide on filenames. Restore validates the source before touching the live DB, copies it to a <db>.restoring staging file co-located with the live DB, then atomically replaces. -wal / -shm sidecars are unlinked first to prevent corruption.

Snapshot files are written 0600 (owner read/write only) regardless of the process umask, since convo data may include prompt/response content. The live DB at ~/.claude/convo.db still inherits the process umask -- set umask 077 in the shell or cron line that creates it if you want owner-only permissions on the live DB as well:

0 3 * * * umask 077 && /path/to/convo backup --auto

Known limitations

  • Restore is same-filesystem only. The atomic-replace step writes a staging file next to the live DB and then renames it into place, so the staging step is always same-FS regardless of where the snapshot source lives. The constraint is between the staging file and the live DB (always the same parent dir), not between the snapshot source and the live DB. Practically: keep CONVO_DB.parent writable and you're fine.

Roadmap

Future releases will add:

  • convo stats skills -- deferred to a future release; requires a schema addition to capture skill invocations from the JSONL.

License

Apache 2.0. See LICENSE and NOTICE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tracine_convo-2.0.0.tar.gz (194.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tracine_convo-2.0.0-py3-none-any.whl (84.5 kB view details)

Uploaded Python 3

File details

Details for the file tracine_convo-2.0.0.tar.gz.

File metadata

  • Download URL: tracine_convo-2.0.0.tar.gz
  • Upload date:
  • Size: 194.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tracine_convo-2.0.0.tar.gz
Algorithm Hash digest
SHA256 4ff9185e39873b23f82a117e292c3cf4e2bd95ce66c3ae3268c74dfa480e74db
MD5 1dea17deeda9230a8213a14f2576d502
BLAKE2b-256 8599f182a3de518f303f1c21b99bd05d599f22aae73477da09027d16780f79c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for tracine_convo-2.0.0.tar.gz:

Publisher: release.yml on TracineHQ/convo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tracine_convo-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: tracine_convo-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 84.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for tracine_convo-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 69736e159a6dc9b5ad5c698feaf0a3327bb7c96bd639cc7b990ddfa13320c041
MD5 3534eed49af6f638c86fe4ca612c711f
BLAKE2b-256 c1d4e956293a7ac1d444a06f30a4e4ea0ee6166792fd3812007f6ef1ceb62234

See more details on using hashes here.

Provenance

The following attestation bundles were made for tracine_convo-2.0.0-py3-none-any.whl:

Publisher: release.yml on TracineHQ/convo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page