logactyl
Build a browsable, fully offline local mirror site from your ChatGPT or Claude data exports.
What it does
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
Installation
pip install logactyl
With 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 encryption
Known issues
There 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.
Quick start
ChatGPT export:
logactyl --chatgpt-zip ~/Downloads/chatgpt-export.zip -o ~/chatgpt-mirror
Claude export:
logactyl --claude-zip ~/Downloads/claude-export.zip -o ~/claude-mirror
Both together (merged site):
logactyl \
--chatgpt-zip ~/Downloads/chatgpt-export.zip \
--claude-zip ~/Downloads/claude-export.zip \
-o ~/chat-mirror
Then open index.html in the output directory.
Appending new exports
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 --append
Encryption
Encrypt the generated site at rest with a passphrase:
logactyl --chatgpt-zip export.zip -o ~/private-mirror --encrypt
Requires pip install "logactyl[encrypt]".
Decrypt or re-key an existing encrypted site:
logactyl --decrypt ~/private-mirror
logactyl --rekey ~/private-mirror
Options
| 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.
Running as a module
python -m logactyl --chatgpt-zip export.zip -o ~/mirror
Requirements
- Python 3.9+
- No required third-party dependencies (stdlib only)
- Optional:
markdown-it-pyfor rich markdown rendering - Optional:
cryptographyfor site encryption
License
This repository ships under 0BSD; see LICENSE.
Licensing / provenance notice
This repository may include AI-generated material and minimal human-authored material. To the extent any portion of this repository is not copyrightable, it is made available without restriction.
No bundled third-party source trees, copied dependency code, or shipped
upstream license texts were identified in this source tree during this review.
Separately installed dependencies remain under their own upstream licenses. See
NOTICE.
Metadata
Release files for logactyl 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| logactyl-0.1.5.tar.gz | 122.1 kB | Without provenance | Details for logactyl-0.1.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| logactyl-0.1.5-py3-none-any.whl | Python 3 | none | any | Details for logactyl-0.1.5-py3-none-any.whl |
Total release size: 233.7 kB
Release files / logactyl-0.1.5.tar.gz
| Download URL | logactyl-0.1.5.tar.gz |
|---|---|
| Size | 122.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3c2df9c83ec31432bf508bbdab1918807265ffaaaf91c06cbdd3223e0a257130
|
|
BLAKE2b-256 checksum How to use checksums |
be2bce8f8adef6c3352c23280159949565b7af70719107320ac75e94f053fd47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / logactyl-0.1.5-py3-none-any.whl
| Download URL | logactyl-0.1.5-py3-none-any.whl |
|---|---|
| Size | 111.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a6574e6d63b5c7c9c9b809944a899c3fb67f584dbc05c7f5d945aae22afdb8bb
|
|
BLAKE2b-256 checksum How to use checksums |
57adfeccf42221926b3aaa21a69d46443e6ac26a48dabdc38c42b566f09bce82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for logactyl 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.