Quick Notes is a tiny command-line app for people who think in the terminal. Type note, jot down whatever's on your mind, and it's saved locally in an instant - then quietly synced to a server only you control.
Every line lands on disk instantly. Nothing waits on a network round trip.
Your notes sync to your own VPS, reachable only through your private Tailscale network.
Background sync just happens. Offline notes catch up the moment you're back.
Get set up
You'll need Go 1.25+ and Tailscale connected on every device you want to sync - laptop, VPS, and phone.
Build the binary and put it on your path.
git clone https://github.com/bkrisa/notes.git
cd notes
go build -o note main.go
sudo mv note /usr/local/bin/
Then point this client at your server:
echo 'export QNOTE_SERVER="http://<your-vps-tailscale-ip>:8080"' >> ~/.bashrc
source ~/.bashrc
Clone and build the same way as the client, then run it as a background service under a dedicated, unprivileged user - never root.
/usr/local/bin - leave it in place, since the systemd service below expects it at this path.[Unit]
Description=Note App Server
After=network.target tailscaled.service
[Service]
Type=simple
User=note-user
WorkingDirectory=/path/to/notes
Environment=QNOTE_LISTEN=<your-vps-tailscale-ip>:8080
ExecStart=/path/to/notes/note --server
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Save that as /etc/systemd/system/note.service, then:
sudo systemctl daemon-reload
sudo systemctl enable --now note
Same build, adapted for Termux's package layout.
pkg install golang git
git clone https://github.com/bkrisa/notes.git
cd notes
go build -o note main.go
cp note $PREFIX/bin/
golang package can lag behind the latest Go release. If tailscale.com refuses to build due to a version mismatch, try an older release: go get [email protected] && go mod tidyDay to day
Run note with no arguments to start a new note. Each line saves as you go.
| Command | Action |
|---|---|
:w | Save and keep adding lines |
:wq | Save and quit |
:q | Quit without saving |
:u | Undo the last line |
| Command | Action |
|---|---|
note :ls | List all notes |
note :find <term> | Search by note ID or content |
note :date <query> | Search by creation date, e.g. 2026-08-06 |
note :edit <id> | Edit line by line - Enter keeps a line, typing replaces it |
note :d <id> | Delete a note |
Under the hood
The path never touches the public internet - only your private Tailscale network.
Trust boundary