Skip to content
tori

An X archive that outlives the post

tori reads X through the free tiers of the x-cli engine, writes every tweet as canonical JSON, downloads the media beside it, and renders inert HTML and Markdown you can open straight from disk. The headline trick: it walks monthly search windows to capture a profile's full history, not just the recent window X hands out.

X is a walled garden. Posts get deleted, accounts go private or vanish, and the timeline only ever shows you a recent slice. "Save As" on a tweet gives you a dead page: the markup is built by JavaScript at runtime, so you keep a shell that renders blank and still phones home. tori (鳥, "bird") takes the opposite approach. It captures the content through the free x-cli engine, stores it as plain JSON, and renders views that run no code.

Say you want to keep Andrej Karpathy's posts on a laptop with no wifi. One command captures the profile; a second serves it back offline:

tori archive karpathy --guest
tori serve $HOME/data/tori/x/karpathy

tori archiving a post into a self-contained folder, summarising it, and serving it back offline

What it does

  • Captures over the free tiers. tori reuses the x-cli x engine to read X with no API key. Tier 0 syndication needs no setup, --guest opens the guest-token tier for deeper paging, and tori auth import uses your own session for the rest.
  • Keeps JSON as the source of truth. Every tweet lands as tweets/<id>.json. The HTML and Markdown views are derived from it and regenerable offline with tori render.
  • Localises the media. Photos, video, and avatars are downloaded beside the records, deduped, and rewritten to local paths so the archive is self-contained and movable.
  • Walks the full history. --by-month exhausts a profile through monthly from:<handle> search windows, sidestepping the ~3200-tweet timeline cap.
  • Stays incremental and resumable. Re-run with tori add to fetch only what is new. Ctrl-C keeps what it already got. The output is deterministic.

Where to go next

Getting started Install tori and capture your first X profile into a self-contained offline archive in under a minute.