Under the hood.
Quern is built on a handful of rules, and each is held by a . A small model on your phone does what it can first; the server keeps nothing an AI job reads; every answer an AI writes is checked before you see it.
Measured, not promised.
One home for every rule.
Each rule lives in exactly one layer, so it can’t be right on one screen and wrong on another. Tap a layer to lift it.
Owns: The rules, in pure Dart: the ledger, search, sync, blends, sealing, understanding names.
Why Undo is real.
Everything you do is an event, appended to a and never edited. Everything you see is a . So Undo is one more event, and every version is still there.
The first note never waits for a model. The phone writes it from what it can read without AI: title, source, caption, creator, length. Over a limit, the save is kept and only its AI work waits.
the note’s there before any AI startsQuick note: profile build on an emulator, 500 notes. AI notes: median of five, our local stack with outside services simulated at production’s measured times. Real low-end phone numbers to come.
Each job climbs only as high as it needs.
Each job uses the highest level it can and falls back on its own. Level 0 always answers, so no feature is ever empty because a model failed.
One validator. One guard. No exceptions.
Each dot is one name from real notes. Before the AI’s reading of a name is overruled, at least two reliable public sources must agree.
The server works on one request, keeps none of it.
Every AI provider is declared or may-train. Private content, anything but a public link you shared, is routed only to no-train providers, and a gate fails the build if any production route could break that.