Access tokens and the MCP server are in.
A list you can hand to someone.
Nooks is a self-hosted list app for a household. One line to add something, one page to read it on, and a printed sheet that is a real deliverable rather than a fallback.
- Self-hosted
- AGPL-3.0
- SQLite or Postgres
- No telemetry
Not a project tracker.
One primitive
A nook is a list. No boards, no projects, no hierarchy to maintain. Today and Upcoming filter what is already there rather than holding copies of it.
One way in
Type the line. A quantity and a date are read off the end of it, so “oat milk 2 saturday” becomes one item with two chips attached — and “Call 2 plumbers” stays exactly what you wrote.
Made to be shared
Share a list with the household, publish a read-only page, or print it. The paper version is designed, not screenshotted.
Yours to run
One binary, one SQLite file. Nothing leaves the machine, because there is nothing in it that phones anywhere.
Your server, your machine.
One binary serves the API and the app from the same process, and keeps everything in one SQLite file you can copy. Postgres instead is a flag, not a rewrite.
How to install it →Built for scripts as much as people.
REST API
Everything the app does is an endpoint under , authenticated with a bearer token you issue yourself. The reference is generated from the same definitions the server is built from, so it cannot describe an endpoint that is not there.
API reference →MCP server
Point an assistant at your instance and it reaches exactly what its token reaches — the same rules the browser gets, not a second set. Every change it makes is attributed to the token in the list’s history.
MCP setup →A few useful answers.
Is Nooks free?
Yes. AGPL-3.0, with no paid tier and no seat pricing. You pay for whatever you run it on, and anything you change stays yours on the same terms.
Can people without accounts read a list?
A list can be published as a read-only page at a stable link, which anybody can open and print. Ticking needs an account, and the link is revocable.
What happens when the connection drops?
The app says so, keeps showing what it last read, and tells you when it last had contact. Ticking and adding still work; what you change is marked as unsent and goes when the connection comes back.
Where does my data live?
In the database you configured, on the host you chose. There is no cloud component and no telemetry to turn off, because there is none to begin with.