Noo
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

Noo 1.2.5 · Linux Tracking
The Noo window: a nested outline of tasks on the left, a rich-text note open on the right, and a running clock in the status bar.
The outline on the left, the selected task's note on the right, and the clock for that task running in the status bar. This is the whole application — there is no second mode to learn.
Where

On your machine

One SQLCipher file that only your password opens. Nothing leaves it until you switch sync on.

Cost

Free, MIT

The client is on GitHub in full. Build it yourself if you would rather not trust a binary.

Reach

Four platforms

Linux, Windows, macOS and Android share one database format and one sync protocol.

Outline

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.

Time

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.

Tools › Time Report 39h 11m · 22 records
The Time Report dialog: a task tree with checkboxes, a date range, format options, and a generated report totalling 39 hours 11 minutes across 22 records.
Pick any set of branches and a date range. Four shapes come out: tree totals, the same tree broken down per day, a flat list of every interval, and CSV — which is the one that ends up in an invoice.

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.

Storage

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.

Preferences › Sync Optional
Noo's sync preferences: a user name, a device name, and an optional sync server URL, with a note explaining that the server stores encrypted data it cannot read.
The server is optional. Leave it blank and two devices on the same network sync directly to each other — no account, no relay, nothing in the middle.

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.

Voice

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.

Preferences › Voice memos On device
Noo's voice memo preferences with the transcription model list open, offering Off, Tiny at 74 MB, Base at 141 MB marked recommended, and Small at 465 MB.
The model runs on your machine. No audio is uploaded, there is no API key to buy, and transcription keeps working on a plane, in a basement, and in ten years.

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.

Agents

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.

Preferences › MCP Off by default
Noo's MCP preferences: an off-by-default switch for the agent server, a read-only option, the loopback endpoint on port 8737, an access token, and a list of excluded branches.
127.0.0.1 only, never a public port. Read-only is one checkbox, and any branch you exclude disappears from the agent's view along with everything under it.
Exit

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
Download

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.

Linux

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
Android

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.

Build from source

Platform support
PlatformStatusHow to get it
LinuxSupportedAppImage on the releases page
AndroidSupportedSigned APK on the releases page
WindowsSupportedBuild from source
macOSSupportedBuild from source
iOSNot startedNot started
WebNot startedNot started
Source

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.