A small, self-hosted notes and to-do workspace for a founding team.
One Go binary, one SQLite file, no external services.
Everyone shares one board: daily notes, future goals, pinned references, and a to-do list that the whole team picks up and finishes together. It runs from a single binary, keeps everything in one SQLite file next to it, and has no build step for the front end. It comes in a dark glass theme and a clean light theme.
- Notes, goals, pinned. Write freely. Anyone can edit or delete, every edit is snapshotted, and deletes go to a recoverable trash.
- Collaborative to-dos. Turn any note into a task. Anyone can pick it up, so several people can work the same thing, and you can see who finished it.
- Threads and reactions. Comment on any note, react with emoji, attach files up to 20 MB.
- Team at a glance. Click a teammate to spotlight their work everywhere. Click a calendar day to see just that day. A recent-activity bar shows the latest changes across the board.
- Search. Full-text search over everything (SQLite FTS5).
- Login built in. Email magic-link style accounts with hashed passwords, sessions, CSRF, and rate limiting. No SSO to set up.
git clone https://github.com/stexz01/nucleus-notes.git && cd nucleus-notes
go build -o nucleus . && ./nucleus
# open http://127.0.0.1:8787First run seeds five founder accounts. Their passwords are printed to the log
and saved to data/initial-credentials.txt. Sign in and change them from the
avatar menu.
Or with Docker:
docker compose up -d --buildNUCLEUS_DEMO=1 NUCLEUS_ADMIN_PASSWORD=demo1234 ./nucleusThis fills a fresh board with example notes, goals, pinned links and to-dos, so
you can see how it looks. Sign in as aarav / demo1234.
| Variable | Default | Purpose |
|---|---|---|
NUCLEUS_ADDR |
127.0.0.1:8787 |
Listen address |
NUCLEUS_DATA_DIR |
data |
Where the SQLite file and uploads live |
NUCLEUS_SECURE_COOKIE |
0 |
Set 1 when served over HTTPS |
NUCLEUS_ADMIN_PASSWORD |
(random) | Pin the first admin's password on first run |
NUCLEUS_DEMO |
(off) | Seed demo content on an empty board |
Put a TLS reverse proxy in front for anything beyond localhost, and set
NUCLEUS_SECURE_COOKIE=1.
| Dark | Light |
|---|---|
![]() |
![]() |
Toggle from the icon in the top-right corner. Your choice is remembered.
Go standard library, modernc.org/sqlite
(pure Go, no CGO), and bcrypt. The front end is plain HTML, CSS and
JavaScript, embedded into the binary. That is the whole dependency list.
MIT. See LICENSE.


