Skip to main content

Conversation Exporter

Export AI conversation sessions into a Git repository using a readable, time-based structure.

What it does

  • Scans source session files (Codex JSONL, Claude projects, Cursor workspaceStorage, Gemini CLI sessions).
  • Normalizes each session into a common model.
  • Writes two artifacts per session:
    • readable Markdown transcript: YYYY-MM-DD-HHMM-slug.md
    • hidden normalized JSON: .YYYY-MM-DD-HHMM-slug.json
  • Organizes history by user and source system:
    • sync: .ai/history/<user>/<source-system>/ (flat — sessions directly inside)
    • backup: history/<user>/<source-system>/<system-name>/<path-relative-to-home>/...
  • Runs idempotently (only reprocesses changed or new sessions).
  • Cursor: supports both single-folder and multi-root (.code-workspace) windows — sessions are attributed to the matching repo folder.

TL;DR

No install needed — just run from any project folder:

uvx --from convx-ai convx sync

Install and run

uv add convx-ai
# or: pip install convx-ai
convx --help

From source:

uv sync
uv run convx --help

sync — project-scoped command

Run from inside any Git repo. Syncs conversations for the current folder by default and writes them into the repo itself:

cd /path/to/your/project
uv run convx sync

By default syncs Codex, Claude, Cursor, and Gemini. Use --source-system codex, --source-system claude, --source-system cursor, or --source-system gemini to sync a single source. No --output-path needed — the Git root is used as destination and the current working directory is used as scope filter. Recursive folder matching is enabled by default; use --no-recursive to restrict to the current folder only. Sessions are written flat under .ai/history/<user>/<source-system>/ with no machine name or path nesting.

backup — full backup command

Exports all conversations into a dedicated backup Git repo:

uv run convx backup \
  --output-path /path/to/your/backup-git-repo \
  --source-system codex

Common options

  • --source-system: source(s) to sync: all (default), codex, claude, cursor, gemini, or comma-separated.
  • --input-path: source sessions directory override (per source).
    • default for Codex: ~/.codex/sessions
    • default for Claude: ~/.claude/projects
    • default for Cursor: ~/Library/Application Support/Cursor/User/workspaceStorage (macOS) Supports both single-folder and multi-root (.code-workspace) Cursor windows.
    • default for Gemini: ~/.gemini/tmp
  • --user: user namespace for history path (default: current OS user).
  • --system-name: system namespace for history path (default: hostname).
  • --dry-run: discover and plan without writing files.
  • --history-subpath: folder inside output repo where history is stored (default: sync = .ai/history, backup = history).
  • --recursive / --no-recursive (sync only): include or exclude subdirectories of the current folder (default: --recursive).
  • --output-path (backup only): target Git repository (must already contain .git).

Configuration defaults

Set repo-level defaults in .convx/config.toml. CLI flags override config values.

[sync]
history_subpath = ".ai/history"
skip_if_contains = "CONVX_NO_SYNC"
redact = true

[backup]
history_subpath = "history"
redact = true

[sanitize]
keywords = ["work", "client-x"]

Example output

convx sync (inside a project repo):

history/
  pascal/
    codex/
      2026-02-15-1155-conversation-backup-plan.md
      .2026-02-15-1155-conversation-backup-plan.json
    claude/
      2026-01-15-1000-api-auth-migration-plan/
        index.md
        agent-abc1234.md
        .index.json

convx backup (dedicated backup repo):

history/
  pascal/
    codex/
      macbook-pro/
        Code/
          my-project/
            prototypes/
              matrix-heatmap-test/
                2026-02-15-1155-conversation-backup-plan.md
                .2026-02-15-1155-conversation-backup-plan.json

Idempotency behavior

  • Export state is stored at .convx/index.json in the output repo.
  • A session is skipped when both:
    • session_key already exists, and
    • source fingerprint (SHA-256 of source file) is unchanged.
  • If source content changes, that session is re-rendered in place.

Other commands

stats — index totals and last update time:

uv run convx stats --output-path /path/to/your/backup-git-repo

explore — browse and search exported conversations in a TUI:

uv run convx explore --output-path /path/to/your/repo

hooks — install or remove a pre-commit hook that runs sync before each commit:

uv run convx hooks install
uv run convx hooks uninstall

Secrets

Exports are redacted by default (API keys, tokens, passwords → [REDACTED]). Be mindful of secrets in your history repo. See docs/secrets.md for details and pre-commit scanner options (Gitleaks, TruffleHog, detect-secrets, semgrep).

Metadata

Release files for convx-ai 0.2.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for convx-ai 0.2.7
File Size Uploaded Provenance
convx_ai-0.2.7.tar.gz 2.9 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for convx-ai 0.2.7
File Interpreter ABI Platform
convx_ai-0.2.7-py3-none-any.whl Python 3 none any Details

Total release size: 3.2 MB

Release files / convx_ai-0.2.7.tar.gz

Download URL convx_ai-0.2.7.tar.gz
Size 2.9 MB
Tags Source
SHA-256 checksum
How to use checksums
bfb943e57dae259320772ff1832777151fb867bc21a28cdfa354b7c9ca86bf81
BLAKE2b-256 checksum
How to use checksums
beda617ed45665d848806fe0ebbd1c6e4828f7847303834ece778613fcc70618
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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}

Release files / convx_ai-0.2.7-py3-none-any.whl

Download URL convx_ai-0.2.7-py3-none-any.whl
Size 295.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dac08aa9952587159726b56dbc51a4858a131540722f1970b195931deb944b10
BLAKE2b-256 checksum
How to use checksums
c3de64809a1bef722944c37f328e4fb0313457bbf415544f25ae174dda7f52f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","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}

Security for convx-ai 0.2.7

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page