Self-hosted · Encrypted · Open source

Your AI conversations,
privately archived.

Lore stores your Claude, ChatGPT, Gemini, Le Chat and DeepSeek exports on your own server. Fully encrypted, searchable, always yours.

Get started → View on GitHub
loreapp.dev
Conversations
Building a Rust HTTP server
Claude · 2 days ago
Explain quantum entanglement
ChatGPT · 5 days ago
Write a cover letter for...
Claude · 1 week ago
Recipe: sourdough starter
ChatGPT · 2 weeks ago
Debug this SQL query
Claude · 3 weeks ago
Building a Rust HTTP server
M
How do I handle concurrent connections in a Rust HTTP server using Tokio?
AI
With Tokio, you spawn a task per connection. Each task runs concurrently on the async runtime — no threads needed.
use tokio::net::TcpListener;
let listener = TcpListener::bind("0.0.0.0:3000").await?;
loop {
  let (socket, _) = listener.accept().await?;
  tokio::spawn(async move { handle(socket).await });
}

Everything you need,
nothing you don't.

Lore is deliberately simple. No accounts on external servers. No subscriptions. Just your data on your machine.

🔒
Client-side encryption
AES-256-GCM encryption runs entirely in your browser. Your key never leaves your device — the server only sees ciphertext.
🏠
Self-hosted
Runs on any shared hosting with PHP + MySQL. No Docker, no Node.js, no special infrastructure required.
Instant local search
Conversations are decrypted once and cached in IndexedDB. Search is fully local — blazing fast with zero server round-trips.
📦
Import from anywhere
Import ZIP exports from Claude, ChatGPT, Gemini, Le Chat, or DeepSeek. ZIPs are processed entirely in the browser — they never touch your server.
🌙
Dark & light mode
Ships with a refined dark theme by default, plus a tasteful light mode (soft greys, never harsh white).
📱
Mobile responsive
Full-screen slide animations, bottom-sheet modals, mobile-aware navigation. Works great on phone.
🗝️
Emergency kit
Generated at registration — a printable recovery file. Reset your password any time without losing a single message.
🛡️
Brute-force protection
Rate limiting, progressive delays, and IP-level lockouts keep your archive safe even if the server is exposed.
💾
Backup & export
Export your archive as a portable plaintext JSON or re-encrypted ZIP. Your data stays yours, always moveable.

Simple by design,
secure by architecture.

01
Install on your server
Upload the files to any PHP host, create a MySQL database, edit config.php. Done.
02
Register & get your kit
Create your account. Lore generates an encryption key from your password and hands you an emergency kit — print it out.
03
Import your exports
Download your Claude, ChatGPT, Gemini, Le Chat, or DeepSeek export ZIP. Drop it into Lore. It's parsed and encrypted in the browser before upload.
04
Browse & search
Your full conversation history, searchable in milliseconds. Code blocks, tool calls, thinking steps — all rendered properly.

Inspired by Bitwarden.

Your password never leaves the browser. Your key never leaves the browser. The server is just encrypted storage.

🚦 Brute-force protection
5 failed attempts in 15 minutes triggers a lockout — per IP and per username. Progressive delays kick in from attempt 3 onward: 1s, 2s, 4s… capped at 32s. Configurable in config.php.
📋 Emergency kit
Generated once at registration. Contains a recovery key that lets you reset your password without losing data. Print it. Store it safely. It's the only way to recover your account.
🗑️ Clean logout
On logout, IndexedDB is wiped, the master key is removed from memory, and the session is destroyed. Nothing sensitive remains on the device.
📧 Optional email
Email is entirely optional — used only for account-level reset notifications, never for data recovery. Skip it entirely for full anonymity.

Import from the AI you use.

Lore detects the source automatically from the export format. Just drop the ZIP in.

C
Claude (Anthropic)
G
ChatGPT (OpenAI)
G
Gemini (Google)
M
Le Chat (Mistral)
D
DeepSeek
L
Lore backup (plaintext & encrypted)

Up in minutes.

Any shared hosting with PHP 8+ and MySQL works. No Composer, no npm, no build step.

1
Clone or download the repo
$ git clone https://github.com/Imonda/lore.git
$ cd lore
2
Create the database

Create a MySQL database, then import schema.sql.

$ mysql -u user -p dbname < schema.sql
3
Configure the app

Edit config.php and fill in your database credentials and app settings.

4
Upload & register

Upload all files to your web root. Open your domain, register, and save your emergency kit.

MIT licensed. Forever free.
Lore is fully open source. Audit the code, self-host it, fork it, extend it. No telemetry, no analytics, no tracking of any kind.
MIT
LICENSE