Complete reference for all Thread Vault CLI screens, controls, pipeline modes, rate limiting, and data management.
After authentication, the Thread Explorer displays all your Instagram DM conversations.
Threads are loaded from cache/inbox_cache.json on first load and ordered by
last_activity_at descending (most recent first).
Filter threads in real-time by title or participant username. The list updates instantly as you type.
Fetches a fresh thread listing directly from the Instagram inbox API and refreshes both the display and the cache file.
After selecting a thread, the Thread Detail screen presents the three scope modes. Each mode
is selectable with number keys 1, 2, or 3. Confirming the selection creates a FilterSet object and navigates to
the Scrape Dashboard.
The heart of Thread Vault. A multi-panel layout with target details, pipeline controls, a real-time message table, activity log, queue monitor, and rate-limit countdown widget.
Starts both the scraper and unsend worker concurrently. The scraper pushes messages to
the asyncio.Queue while the unsend worker consumes and processes them in parallel — maximum
throughput.
Runs the scraper worker alone. Messages are fetched, written to SQLite, and added to the table — but not unsent. Use when you want to inspect content before committing to deletion.
Unsends only the messages currently checked (selected) in the table. Requires messages to be scraped first. Useful for selective deletion after reviewing content.
Sets the stop flag — both workers check this flag at each iteration and exit cleanly. Already-unsent messages are marked deleted in SQLite. The pipeline halts gracefully within the current request cycle.
| Key | Action |
|---|---|
| space | Toggle selection on highlighted row |
| ctrl+a | Select all filtered items (or clear all if all are selected) |
| ctrl+f | Search/filter the message table by content or type |
| x | Reset pagination cursor — allows re-scraping from page 1 |
Thread Vault's RateLimitManager handles Instagram's 429 responses with a five-stage exponential backoff schedule. Each stage adds ±20% random jitter to avoid synchronized retry storms.
During a rate-limit wait, the dashboard shows a live countdown progress bar via the
RateLimitWidget. The tick_cb callback fires every second with the remaining wait
time. Pressing Stop during a wait cancels the wait immediately.
The scraper saves pagination cursors to scrape_progress in SQLite after each page. If a scrape is
interrupted, re-running it on the same thread resumes from the last saved cursor automatically.
To force a full re-scrape from page 1, press X in the dashboard to reset the cursor state for the current thread.
scraped_messages, scrape_progress, and
unsend_progress, and deletes cache/session.json and
cache/inbox_cache.json. This is a hard wipe — not a soft delete. The threads table
persists between sessions for the thread directory cache.