Common questions about Thread Vault CLI — from data storage and privacy to authentication, rate limits, and troubleshooting.
data/vault.db, a SQLite database
on your local filesystem. The database uses WAL mode for concurrent access. No data is ever uploaded to
external servers, analytics endpoints, or cloud storage. Thread Vault CLI has no telemetry or network
calls outside of www.instagram.com.sessionid and csrftoken cookies only — the
same mechanism used by your browser when you stay logged in to Instagram. Your password is entered
directly into the Instagram login page in the Chromium browser, not processed by Thread Vault.cache/session.json — session ID, CSRF token, user PK, usernamecache/inbox_cache.json — thread directory listingdata/vault.db — SQLite database with scraped messagesthreads table in vault.db persists between sessions (for
the thread directory cache) but contains no message content.
/api/v1/direct_v2/inbox/?limit=1 with
the cached session. If the response contains a valid inbox key and the status is not "fail",
the session is considered valid and the username is extracted from the viewer field. This
probe is more reliable than hitting the profile endpoint because it confirms the session can actually
fetch DM data.scrape_progress in SQLite after
each page. Re-running the scraper on the same thread automatically resumes from the last saved cursor. To
force a full re-scrape from the first page, press X in the dashboard to reset
the cursor state.is_sent_by_viewer on each message item
(equivalent to item.sent_by_current_user). Only messages sent by the authenticated account
are written to SQLite and pushed to the queue. Received messages are skipped.text, caption, and
caption_text keys from all message payloads before writing to SQLite. This is intentional —
Mode A focuses on media metadata only, not the textual content associated with media messages.data/vault.db. Check if
another instance of Thread Vault CLI is running. Thread Vault uses WAL mode and a 5-second busy timeout to
minimize this, but concurrent writers to a single SQLite file will still serialize. Kill any other
instances and retry.@username.uv sync to ensure all dependencies are installed in the managed virtual
environment. Never run python -m app directly without uv run — it won't use the
correct venv. Always prefix with uv run: uv run python -m app.