Build a browsable, fully offline local mirror site from your ChatGPT or Claude data exports.
logactyl takes an official data export ZIP from ChatGPT or Claude and generates a static HTML site that you can open directly in any browser (no server required). The site includes:
- Per-conversation pages with rendered messages, code blocks, TeX math, and attachments
- Full-text offline search across all conversations
- Project/folder grouping and an interactive organizer
- Optional AES-256-GCM encryption at rest
pip install logactylWith optional dependencies for rich markdown rendering and encryption:
pip install "logactyl[all]"Or pick what you need:
pip install "logactyl[markdown]" # markdown-it-py for CommonMark rendering
pip install "logactyl[encrypt]" # cryptography for AES-256-GCM encryptionThere is currently no way to derive project names via inference using the official export archives. When either OpenAI or Anthropic add some mapping for projects in their exports it will be added to this tool.
ChatGPT export:
logactyl --chatgpt-zip ~/Downloads/chatgpt-export.zip -o ~/chatgpt-mirrorClaude export:
logactyl --claude-zip ~/Downloads/claude-export.zip -o ~/claude-mirrorBoth together (merged site):
logactyl \
--chatgpt-zip ~/Downloads/chatgpt-export.zip \
--claude-zip ~/Downloads/claude-export.zip \
-o ~/chat-mirrorThen open index.html in the output directory.
Re-run with --append to merge new exports into an existing site without losing organizer edits:
logactyl --chatgpt-zip newer-export.zip -o ~/chatgpt-mirror --appendEncrypt the generated site at rest with a passphrase:
logactyl --chatgpt-zip export.zip -o ~/private-mirror --encryptRequires pip install "logactyl[encrypt]".
Decrypt or re-key an existing encrypted site:
logactyl --decrypt ~/private-mirror
logactyl --rekey ~/private-mirror| Flag | Description |
|---|---|
--chatgpt-zip PATH |
Path to a ChatGPT data export ZIP |
--claude-zip PATH |
Path to a Claude data export ZIP |
-o, --output DIR |
Output directory (default: derived from input) |
--append |
Merge into an existing site instead of overwriting |
--encrypt |
Encrypt the output site with a passphrase |
--decrypt DIR |
Decrypt an existing encrypted site |
--rekey DIR |
Change the passphrase on an encrypted site |
--render-markdown |
Enable CommonMark rendering (needs markdown-it-py) |
--no-render-markdown |
Disable markdown rendering (raw text) |
--zip |
Produce a .zip of the output site |
--add-search DIR |
Add search to an existing site that was built without it |
Run logactyl --help for the full list.
python -m logactyl --chatgpt-zip export.zip -o ~/mirror- Python 3.9+
- No required third-party dependencies (stdlib only)
- Optional:
markdown-it-pyfor rich markdown rendering - Optional:
cryptographyfor site encryption
MIT