A secure, offline-first browser extension for backing up and viewing your ChatGPT conversations.
- 🔒 PIN Protection - AES-256 encryption with PBKDF2 key derivation
- 📦 Local Storage - All data stays on your device
- 🔍 Full-Text Search - Fuzzy search across all conversations
- 🏷️ Categories - Color-coded organization (like browser tab groups)
- 👁️ Visibility Controls - Hide/show individual questions or answers
- JSON - Complete data export
- Markdown - Standard Markdown with code blocks
- Obsidian - With YAML frontmatter and wikilinks
- Workflowy - OPML format for outline import
- Notion - Direct API integration
- Client-side encryption using Web Crypto API
- PIN never stored in plaintext
- PBKDF2 with 100,000 iterations
- AES-256-GCM encryption
- Node.js 20+
- npm or yarn
cd extension
npm install# Start dev server
npm run dev
# Build for production
npm run build
# Build for Firefox
npm run build:firefox# Run unit tests
npm test
# Run tests with coverage
npm run test:coverage
# Run E2E tests
npm run test:e2e
# Run E2E tests with UI
npm run test:e2e:uisrc/
├── background/ # Service worker
├── content-scripts/ # DOM extraction
├── popup/ # Extension popup UI
├── viewer/ # Full-page archive viewer
├── utils/ # Utilities
│ ├── crypto.ts # Encryption/PIN
│ ├── storage.ts # Storage with compression
│ ├── export/ # Export formats
│ │ ├── markdown.ts
│ │ ├── obsidian.ts
│ │ ├── workflowy.ts
│ │ └── notion.ts
│ └── types.ts # TypeScript definitions
└── assets/ # Icons and images
e2e/ # Playwright E2E tests
User PIN → PBKDF2 (100k iterations) → AES-256 Key
↓
Data → Compression → Encryption → Storage
browser.storage.localfor encrypted data- pako.js for compression
- Per-message visibility settings
- Search index for fast queries
- Chrome/Edge (Manifest V3)
- Firefox (Manifest V2)
- No cloud - Everything stays local
- No tracking - Zero analytics
- Open source - Auditable code
We used Playwright MCP (Model Context Protocol) to automate filling out the Chrome Web Store listing. This approach:
- Saves hours of manual form filling
- Ensures consistency across fields
- Can be repeated for updates
Extension ID: oplklijgllkfnaeleekonfhbkbnhfklk
See e2e/README.md for detailed automation documentation.
- Build the extension:
npm run build- Zip the build output:
cd .output/chrome-mv3
zip -r ../../chatgpt-archive-1.0.0.zip .-
Click "New Item" and upload the zip file
-
Fill in store listing:
- Use content from
STORE_LISTING.md - Upload screenshots (1280x800 or 640x400) from
assets/store/ - Upload promotional images (optional) from
assets/store/ - Privacy policy: Use
PRIVACY.mdcontent - Category: Productivity
- Privacy Practices: All permission justifications are documented in the e2e README
- Use content from
-
Submit for review (typically 1-3 business days)
- Build for Firefox:
npm run build:firefox-
Zip the build output from
.output/firefox-mv2/ -
Submit new add-on and upload the zip
-
Use content from
STORE_LISTING.mdfor description
- Icons: 16x16, 32x32, 48x48, 128x128 PNG (in
src/public/icon/) - Screenshots: At least 1-3 screenshots showing the extension
- Privacy Policy: See
PRIVACY.md
MIT