Notes that belong to you.
End-to-end encrypted, offline-first markdown notes, synced to your own server. No cloud, no trackers, no subscriptions.
Clean, fast, private
Works on Android and Linux. No account needed to get started.



Built for privacy, not profit
Simple decisions: you own the data, you control the server, the code is public.
End-to-end encrypted
Notes are encrypted on your device before they leave it. The server only ever stores ciphertext, so it can't read your content even if it gets compromised.
Offline-first
Every device keeps a full local copy. Notes open instantly and editing works with no internet. Changes sync automatically when your server is reachable.
Self-hosted
Run the sync server on your home network - a Raspberry Pi, an old laptop, anything. Your data stays on hardware you own and never touches a third-party cloud.
Free and open source
Licensed AGPLv3. Read the code, audit it, self-host it, fork it. No paywalls, no telemetry, no lock-in. Available on F-Droid, AUR, and Flatpak.
Want to try it yourself?
A browser version of the app. Notes stay in your browser - nothing is sent anywhere.
The real app syncs to your own server with end-to-end encryption. Download it →
Download
Free, forever. No account required.
Linux
Android
FOSS-only Android app store. MR #41300 submitted, listing coming soon.
arm64-v8a release APK from GitHub releases. Sideload manually.
Also need the sync server?
One binary, runs on Linux. See the README for setup. Takes about 5 minutes on a Raspberry Pi.
Open source on GitHub · AGPLv3 license
Set up the sync server
Runs on any Linux machine on your home network. Takes about 5 minutes.
Download the server binary
One self-contained executable, no runtime or dependencies required. Replace linux-x64 with linux-arm64 if on a Raspberry Pi.
curl -Lo librenotes-server \ https://librenotes.ayopili.com/dl/server chmod +x librenotes-server
Run it
On startup it prints an auth token and the address it listens on. Copy the token - you will need it in the app.
./librenotes-server # Token: aBc123... <-- copy this # Listening on 0.0.0.0:7070
Connect the app
Open Settings then Sync in the app. Enter your server IP and the token. Use the same passphrase on every device.
Server URL: http://<server-ip>:7070 Token: aBc123... Passphrase: (pick something strong)
Want sync away from home too?
Put your devices and server on a Tailscale or WireGuard mesh. No server changes needed - just update the URL in the app.