Free & open source · AGPLv3

Notes that belong to you.

End-to-end encrypted, offline-first markdown notes, synced to your own server. No cloud, no trackers, no subscriptions.

Scroll to explore

Clean, fast, private

Works on Android and Linux. No account needed to get started.

Notes list
Notes list
Note editor
Note editor
Sync settings
Sync settings

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.

Demo mode - notes are not synced and live only in your browser.

The real app syncs to your own server with end-to-end encryption. Download it →

Set up the sync server

Runs on any Linux machine on your home network. Takes about 5 minutes.

1

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
2

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
3

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.

Full README