1.2.5
Notes that keep time.
A tree of tasks and notes in one encrypted file on your own machine. Start a clock on any line; the hours come back out as a report you can invoice from.
Linux AppImage and a signed Android APK · MIT · no account, no sign-up, no telemetry

On your machine
One SQLCipher file that only your password opens. Nothing leaves it until you switch sync on.
Free, MIT
The client is on GitHub in full. Build it yourself if you would rather not trust a binary.
Four platforms
Linux, Windows, macOS and Android share one database format and one sync protocol.
A tree, with a real editor inside it.
Tasks nest as deep as the work does, and each one carries a rich-text note — headings, lists, emphasis, images, attached files. The outline is the document, not an index of documents.
Nesting
Unlimited depth. Drag a row to move it, with its whole subtree.
Search
Full-text across every note in the database, from one panel.
Attachments
Stored once per file by content hash. Images show a thumbnail, audio plays in place.
History
Every change to a task is recorded field by field, and readable after the fact.
Start a clock on any line.
One click starts tracking the selected task; the elapsed time sits in the status bar until you stop it. Intervals can be added and corrected by hand afterwards, because nobody remembers to press stop.

Rolls up
A parent shows its own time and its children's, separately.
Editable
Add, retime or delete any interval from the task's timeline.
Exports
Save the report as Markdown or CSV, or copy it straight to the clipboard.
Encrypted at rest. Encrypted in flight. Same password.
The database is one SQLCipher file, opened by a password you choose and nobody else holds — forget it and the data is gone, which is the point. Sync derives its keys from that same password, so a relay server only ever stores blobs it has no way to read.

No account
Sync between devices on one network needs no server and no sign-up at all.
Delivers
A device says what it already holds and gets back exactly what it is missing, from any peer, in any order.
Merges
Field by field, last write wins on the origin timestamp — the same result on every device however packets arrive.
Sends once
Attachments are addressed by content hash, so a file shared by four notes crosses the wire a single time.
Say it, and read it back.
Record a memo from the editor toolbar. It is encoded to Ogg Opus in memory and stored as an ordinary attachment — and if you pick a model, whisper.cpp turns it into text in the note itself.

Kept
Transcribing adds text to the note. The recording stays playable.
Offline
Download a model once; after that nothing about a memo touches a network.
Let a local agent read the outline.
Noo speaks MCP over loopback, so a coding agent on the same machine can search your tree, read a note, and — if you allow it — create and move tasks. Off by default, gated by a token, with branches you can keep out of reach.

It opens without Noo.
Export writes the whole tree to a directory Obsidian reads as a vault: a folder per task that has children, a Markdown file per task, and its time records in plain text beside it. Import reads the same shape back in. Nothing about your notes needs this application to survive.
export-dir/ ├── Noo/ │ ├── Noo.md │ ├── timeline.txt │ ├── Sync/ │ │ ├── Sync.md │ │ ├── timeline.txt │ │ ├── Version vectors.md │ │ └── Version vectors - timeline.txt │ └── Release 1.2.5.md └── Notes.md
Get it.
Every release carries a Linux AppImage and a signed Android APK, with checksums beside them. Windows and macOS are supported and build from the same source; there is no packaged build for them yet.
noo-1.2.5-x86_64.AppImage
An AppImage with everything inside it. Make it executable and run it — nothing to install, no runtime to add.
Get the AppImage →noo-1.2.5-android.apk
A signed universal APK for sideloading. The same database and the same sync protocol as the desktop.
Get the APK →SHA256SUMS is attached beside the binaries. From the directory you downloaded into:
sha256sum -c SHA256SUMS
Or build it yourself — Flutter 3.44+ and, on Linux, the GStreamer development packages. The first build is slow: two dependencies compile native code from source, and nothing is installed system-wide.
| Platform | Status | How to get it |
|---|---|---|
| Linux | Supported | AppImage on the releases page |
| Android | Supported | Signed APK on the releases page |
| Windows | Supported | Build from source |
| macOS | Supported | Build from source |
| iOS | Not started | Not started |
| Web | Not started | Not started |
Read it before you run it.
The whole client is on GitHub under the MIT licence — the outline, the crypto, the sync protocol, the build scripts. The sync relay is a separate server and is not in that repository; you never have to use one.