Saule · v7.7.5 · Android browser
A browser that forgets.
Android 8+ · ~320 KB · no libraries · sideload
What it is for
Cookies go the moment you close the tab — not later, not eventually. Everything else is swept on exit.
What survives is the keep list: the few sites you have dealings with, where a login matters, where somebody counts the articles you read, where a basket is waiting.
Erasing those is not privacy; it is a way of becoming a stranger every evening. So the choice is yours and not the browser's.
The list starts empty. Nothing is on it that you did not put there.
How you steer it
A strip along the top: back, a badge, the address, a menu.
And the pie — the fan at the top of this page. Drag the mark to any edge and it stays where you left it; hold the hub and the fan turns over to a second face.
On a long phone a thumb reaches the edge and almost nothing else. The pie is made out of exactly that observation.


What no other browser here does
A list with a search across names and values, per host, with the parent domains walked up to the public suffix. Tap to copy a value, hold to drop one. Every host has an arrangement — kept, cleared on exit, never kept — and a badge on the strip says which, in a picture rather than a word.
Page by page, and a PDF behind a link arrives with your cookies — so the ones that live behind a login come as themselves rather than as a sign-in page.
Headings, code, quotes, tables and all.
The voice takes its language from the document, not from the phone. A Finnish article is read in Finnish even where the application is in Russian.
Words
English, Finnish, Swedish, Russian, Ukrainian, German, French, Spanish, Arabic, Hebrew, Kazakh, Kyrgyz, Urdu, Chinese — 129 strings each, with no gaps.
And a setting that takes the labels away altogether. Not a joke: a test of whether a button can be recognised without being read.
How it is made
No Gradle, no Android Studio, no dependency resolution, nothing
downloaded at build time. Java compiled against android.jar,
packed and signed by hand. Written on a phone, in conversation.
aapt package -f -m -J gen -M AndroidManifest.xml -S res -I android.jar -F base.ap_ javac --release 8 -classpath android.jar -d cls $(find src gen -name "*.java") dalvik-exchange --output classes.dex cls zipalign -f 4 unsigned.zip saule.apk && apksigner sign --ks <key> saule.apk
The design decisions are the author’s: what the browser forgets, what it keeps, where the mark sits, what a button is allowed to promise. The code was written and rewritten against those decisions by Claude and ChatGPT, which also argued when a decision contradicted itself and translated the interface into thirteen languages the author does not speak. Every line was read before it shipped; some of it was sent back.
The artwork is theirs too, and not the same one twice: the woman on the launcher was drawn by Gemini, the two illustrations on this page by ChatGPT, and the icon glyphs inside the application are hand-drawn where the Material set had no word for what was meant.
Permissions
Internet — to fetch pages, which is the whole job.
Network state — to know whether there is a connection before blaming a site for a blank page.
Location (coarse) — weather on the fresh page. Optional; refuse it and the sky goes quiet.
No account, no sync, no telemetry. Nothing is sent anywhere, and the log stays on the phone.