Your Private Journal That Stays Yours
Built by Ken LaCroix · open source · MIT licensed
Local-first journaling with mood tracking and AI insights — all on your device. No accounts, no cloud, no compromises.
Open in your browser. No account, no download.
Windows, macOS, Linux. Full features. Always free.
No Pro tier. No subscription. No paid features. Everything ships to everyone.
Released 20 days ago

See it in action
A writing space built for reflection
Clean, focused, and private by default. Your words stay on your device.

Write view

Calendar view
Mood selector
One tap to log how you feel. Five levels, always visible.
Rich text editor
TipTap-powered: headings, lists, bold, inline code. Yours locally.
Auto-save
Writes to encrypted SQLite the moment you pause. No manual save.
Multiple journals
Named books with emoji and color. Work, personal, therapy — separate.
Activity tagging
Tag what you were doing — Exercise, Social, Reading — then see mood patterns in the Insights view.
Mood calendar
Monthly heatmap colored by daily mood. Spot patterns at a glance across weeks and months.
Privacy at the core
Zero-knowledge
Your password is never stored or transmitted. Keys are derived in memory and cleared on lock.
No accounts
No email required. No tracking. No ads. Ever.
Open source
Every line of code is public on GitHub. You don't have to trust our privacy claims — you can verify them.
How it works
Up and writing in three steps
01
Download or open in browser
Native desktop app on Windows, macOS, and Linux. Or open journal.moodhaven.app in any modern browser — no installation, no account form.
02
Set a password — that's your key
Your password is never stored or sent anywhere. It derives the encryption key in memory. No reset button. No support ticket. Only you can unlock your journal.
03
Start writing. Nothing else required.
No cloud setup. No storage picker. No email confirmation. Your first entry encrypts to disk in under a second. That's the whole onboarding.
How I Built This
Decisions, tradeoffs, and hard lessons from 7 months building a privacy-first desktop app solo. Read the full post →
The Problem
Every journaling app I tried either required a subscription, stored my private thoughts in someone else's cloud, or felt designed to sell me ads based on my emotional state. I wanted something that felt like a private notebook — not a SaaS product.
The Tech Decisions
Tauri + Rust for native performance without Electron weight. AES-256-GCM encryption before data ever touches SQLite — the Rust layer never sees plaintext. React + TypeScript strict. No cloud dependencies; peer sync over LAN via Ed25519 key exchange.
The Hardest Part
Encryption UX without a cloud recovery path. When your password IS the key, "forgot password" means data loss. Designing a recovery flow that is honest about this tradeoff — without scaring away users — took three full redesigns.
What you get
Everything you need, nothing you don't
Local-first, always
SQLite on your disk. No telemetry, no sync unless you opt in. Check the source — there's no network call in the entry save path.
AES-256-GCM encryption
PBKDF2, 600k iterations, per-entry random salt. Keys derived in memory, never stored. Audit it yourself in crypto.ts.
AI from metadata, not your words
Mood scores, time-of-day patterns, entry frequency — that's all the AI sees. Your journal text never leaves the device.
Multiple journals
Named books with emoji and color. Work, personal, therapy — each filtered separately in the timeline and calendar.
Peer sync over LAN
Ed25519 device identity, QR/PIN pairing, AES-256-GCM transport. No cloud relay. A passive observer sees only ciphertext.
Every platform
Native desktop on Windows, macOS, Linux. Browser PWA at journal.moodhaven.app. Wear OS for voice captures from your wrist.
Activity tagging
Tag entries with activities — Exercise, Reading, Social, Meditation and more. See which activities correlate with your best and worst moods in the Insights view.
Time Capsule
Seal any entry until a future date. Revisit a letter to your future self when the date arrives — or let anniversary entries surface each year automatically.
Voice memos from your wrist
Record a voice reflection on Wear OS. Whisper.cpp transcribes it locally on your desktop — no cloud STT, no audio ever leaves your devices.
Under the hood
Built to be verified, not trusted
Zero-knowledge by design
Your journal text never leaves your device. All encryption and decryption happens in the browser or desktop app using AES-256-GCM with PBKDF2-derived keys. The Rust backend stores and retrieves opaque ciphertext — it never sees plaintext.
Audit the source- Cipher
- AES-256-GCM
- Key derivation
- PBKDF2-HMAC-SHA256, 600k iterations
- Salt
- 16 bytes, per-entry random
- Key storage
- In-memory only, cleared on lock
- Cloud required
- Never
Privacy, proved
Zero data collected. Verified in code.
What we never collect
Not stored. Not transmitted. Not possible by design.
- Journal text
- Passwords or keys
- Usage analytics
- IP addresses
- Location (beyond opt-in weather)
- Device identifiers
Encryption spec
Verify it in crypto.ts and journal.rs.
- Cipher
- AES-256-GCMauthenticated encryption, tamper-evident
- Key derivation
- PBKDF2-HMAC-SHA256600,000 iterations — on par with 1Password and Bitwarden
- Salt
- 16 bytes, per-entry randomcompromising one key exposes exactly one entry
- Key storage
- Nonederived in memory, cleared on lock or exit
- Network calls on save
- ZeroSQLite write path is entirely local — audit create_journal_entry in journal.rs
- Source available
- MIT licensedevery line of the encryption path is public and auditable
Try it: Encrypt in your browser
AES-256-GCM via WebCrypto API — no server, no network call.
How we compare
MoodHaven vs cloud-based journals
| Feature | MoodHaven | Cloud journals |
|---|---|---|
| Requires a cloud account | No — local only | Yes — Google/Dropbox/iCloud required |
| Open source & auditable | MIT licensed | Rarely |
| Peer sync without relay | Yes — LAN direct | No — cloud relay only |
| Works fully offline | Yes | Sometimes |
| End-to-end encryption | Yes — keys in memory, never stored | Varies |
| Zero telemetry | Yes | Often collects usage data |
| Paid tier for AI features | Never — always free | Usually $10–20/year |
Newsletter
Stay in the loop
Writing about privacy-first software, local-first design, and what's coming next. New posts go to Substack first.
Delivered via Substack. No spam. Unsubscribe any time.
MoodHaven is open source
- v1.9.0
- Current version
- 1,461
- Automated tests
- MIT
- License
- Mar 2025
- First commit
v1.9.0 released Jun 2026
Built in public. Every line of code visible to you. MIT licensed.
View all articles on Substack