A personal learning journal with spaced repetition, open threads, and end-to-end encryption. Self-hosted. Yours forever.
See it in action
Five views. One habit. Write once, review at the right moment.
Write daily entries — text, Markdown, code, images, audio
What's inside
FSRS-5 — the state-of-the-art spaced repetition algorithm — decides when to surface an entry, right before you'd forget it. No flashcard decks, no manual scheduling. Write once, review at the exact right moment.
Ideas that need more thought get a thread — tracked with due dates, color labels, and overdue alerts. Nothing falls through the cracks.
Your passphrase derives the key via PBKDF2 at 600k rounds. Content is encrypted with AES-256-GCM before it ever touches the sync server. The key lives only in memory — never stored, never sent.
One Docker command. One SQLite file. One account — yours.
No shared infrastructure, no other users on the same instance.
Your journal lives where you put it, and a single VACUUM INTO backs it up.
Self-hosted
No SaaS subscription. No shared infrastructure. A single Docker container with a named SQLite volume. Traefik handles TLS automatically.
Full setup guide →git clone https://github.com/gleaned-app/gleaned sh docker/setup.sh docker compose -f docker/compose.traefik.yml up -d VACUUM INTO backup.db The idea
You write something down, file it away, and never see it again. gleaned starts from the opposite premise: every entry you write is automatically scheduled to come back — exactly when you're about to forget it. No flashcard decks. No manual tagging for review. Just write, and the algorithm handles the rest.
It's also end-to-end encrypted by default. Your passphrase derives the key in the browser; the server only ever stores ciphertext. Self-hosting means no SaaS subscription and no shared infrastructure — your journal lives where you put it, and a single SQLite file is everything.