Skip to content

Sync

txi sync walks the directory configured under paths.transcripts and reconciles the SQLite index with the filesystem. It is the primary command for keeping the index up to date.

txi sync

How it works

For each candidate file, txi computes a content hash and compares it against the stored hash:

  • New files are parsed and inserted as conversations.
  • Modified files are re-parsed and updated in place.
  • Renamed files are detected via hash and updated without losing the existing row.
  • Deleted files cause their rows to be removed (unless --keep-orphans is set).

After structural sync, embedding runs as a post-pass against new and changed conversations (skipped on renames since content is unchanged, and on unchanged conversations). See Embed for details and use --no-embed to skip this step.

The output is a summary report:

new conversations:       3
updated conversations:   1
renamed conversations:   0
deleted conversations:   0
unchanged conversations: 142
embedding:               chunks=42 embedded=42 cache_hits=0
elapsed:                 0.84s

Options

txi sync \
  --only path/to/specific.txt \
  --strict \
  --keep-orphans \
  --dry-run
  • --only PATH — restrict sync to specific files. May be passed multiple times. Useful for re-indexing a single file after fixing a parser.
  • --strict — abort on the first malformed source instead of warning and continuing.
  • --keep-orphans — don't delete rows whose source files have disappeared.
  • --dry-run — preview what would change without modifying the index. Sync runs against a temporary copy of the database, which is discarded afterward, so the report is identical to a real run.
  • --no-embed — skip the embedding post-pass; only structural rows are written.
  • --config PATH — override the default config file location.

Stats

After syncing, check the corpus shape:

txi stats
conversations:       146
  kind=meeting       144
  kind=slack_thread  2
turns:               18,402
people:              12
date range:          2023-04-12 → 2026-05-08