Android · offline first · no accounts

Small apps for one person

I make apps for one person at a time — for fun, for self-indulgence, and for taking back what a device was supposed to be. Yours. Not a feed, not an audience, not a machine churning away on someone else's behalf. Seven of them now, in two families: the ones that keep the characters you love, and the ones that put back the pieces of Android that were quietly taken away.

01 — Yumeshipping

Three apps for people who do not exist

A partner, the world they came from, and a dex of everyone you love — kept on your phone, in files you can open yourself. They speak one common format, so a character written in one can walk into another. Two you can download today; the third is the private original the public one was rebuilt from.

0.4.0-beta

Tera

Your partners, your worlds, your lore — kept to yourself.

A private, offline-first place to keep the characters, worlds and writing you care about.

Licence
AGPL-3.0-only
Needs
Android 12 and up
1.0.0

WaifuDex

A Pokédex for the characters you love.

Catalogue every character you love. Numbered, typed, tinted, and entirely offline.

Licence
MIT
Needs
Android 12 and up
Private build

UriDex

The same dex, kept to myself.

The private original. Not distributed, not for sale, not open.

Licence
All rights reserved
Needs
Android 12 and up
Look inside No download — see WaifuDex

02 — AOSP

Four pieces of Android, brought back

The launcher, the music player, the keyboard and the clock, revived from the Android Open Source Project and rewritten in Kotlin. Every one of them still exists upstream and none of them ships on a phone you can buy. These are what they look like when someone is still maintaining them.

0.5.0

Eden

A launcher that asks rather than assumes.

A Kotlin rewrite of AOSP Launcher3, with the live wallpapers Android stopped shipping. Every default is only a default.

Licence
MIT
Needs
Android 10 and up
0.3.0

Choir

The music on your device, and nothing else.

A local-first music player, ported from the AOSP Music app to Kotlin, Compose and Media3.

Licence
GPL-3.0-or-later
Needs
Android 10 and up
Being built

Hieroglyph

A keyboard that types, and does not watch.

A fork of AOSP's LatinIME, with the suggestion engine — and every permission it needed — left behind.

Licence
MIT
Needs
Android 10 and up
Look inside No build to download yet
0.2.0

Basalt

A clock in brass and phosphor, with no Material anywhere in it.

A ground-up recreation of the AOSP clock, drawn entirely from scratch on Compose foundation.

Licence
MIT
Needs
Android 10 and up

03 — Updates

What shipped, and what it changed

The current release of each app, in its own words. Where an update asks something of you, it says so here rather than in a changelog you were never going to open.

  1. Tera

    0.4.0-beta August 2026

    Characters can leave the app now, and a file opens when you tap it.

    • Settings → Characters → Transfer writes a .dexpack that other character apps can read, and reads theirs. Nothing an incoming file carries is thrown away — a field Tera has no column for is written into the partner's description as a labelled line.
    • .trbz and .dexpack are registered with Android, so tapping one in a file manager, or sharing one to Tera, lands in the right screen.
    • An icon at last: two flowers grown into each other on crossing stems, drawn as vector paths, with a monochrome layer for Android 13 themed icons.
    • Minimum Android version is now 12, in line with the rest of the family.

    Coming from 0.3.0 or earlier? One manual step.

    The package name changed — app.tera.auriel became app.auriel.tera — and Android has no supported way to change that in place. 0.4.0 installs beside your old Tera rather than over it. Export a .trbz from the old one, install this, import it, then uninstall the old app. This is also the first signed release, which is the other reason it cannot install over an unsigned build. From here every release updates normally.

  2. WaifuDex

    1.0.0 August 2026

    First release — the whole dex, rebuilt on open fonts.

    • Entries, elements, the cropper, Markdown lore and read-aloud, all of it finished rather than staged.
    • Settings → Export to Tera writes a .dexpack; Import characters reads one back, and accepts another dex app's backup archive directly.
    • .wdex and .dexpack open by tapping them in a file manager — a backup goes to the restore prompt, a pack to the import review.
    • Obtainium can watch the repository for you: add the repo, filter APKs by arm64-v8a, and updates arrive on their own.
  3. UriDex

    1.0.0 August 2026

    Character transfer, and files that open when tapped.

    • Settings → Character transfer reads and writes .dexpack, the same neutral format Tera and WaifuDex speak. Importing adds; a collision asks.
    • The importer also reads other dex apps' backup archives directly — a zip with a characters table is enough, whatever the file is called.
    • .rdex is unchanged and still the whole-database door.
    • Launcher icons regenerated from the vector mark, so the fallback art matches the adaptive one instead of being stale.
  4. Eden

    0.5.0 August 2026

    Widgets, hosted properly — and a switch for people who want less launcher rather than more.

    • Every widget your phone provides, grouped by app, each one labelled with how many cells it takes on your grid rather than an assumed one. Anything that cannot fit is shown but not offered, instead of failing after you have already agreed to it. Drag the handles to resize in whole cells.
    • Simple mode turns Eden back into what it was at v0.2.0 — a home screen, a drawer, wallpapers and their settings. Nothing is deleted: your renames, your chosen icons and your placed widgets all come back the moment you switch it off.
    • The home screen no longer swings sideways because you set the phone down at an angle. Apps you open still rotate exactly as they did, and there is a setting if you disagree.
    • Deleting a page says how many things are on it and waits for an answer. An empty page still goes without ceremony.
    • Fixes: names are back under the apps in an open folder, blank tiles are gone from the icon browser, page dots are tappable, and the drawer closes if you pull it down from the top.

    Still signed with a throwaway test key

    Your device may warn about the installer source, which is expected. More importantly, a future release signed with a real key will not install over this one — you would have to uninstall first, and that clears your layout. If that matters to you, wait for a build with a stable key.

  5. Choir

    0.3.0 August 2026

    Lyrics, liked songs and editable playlists — and a library that stops hiding what it could not read.

    • Lyrics read from .lrc sidecars and from ID3v2, Vorbis, MP4 and WAV tags, scrolled in time with the song, down to the word where the file says so. Optionally fetched from LRCLIB, NetEase, Musixmatch or your own service — off by default, and in an order you set.
    • Liked songs and editable playlists, both re-linked if Android renumbers your library, with .m3u import and export.
    • FFmpeg decoding for ALAC and Dolby, an AIFF reader written from scratch, and files the media scanner could not parse listed rather than hidden — a track that will not play now says why.
    • 201 unit tests, weighted where the bugs are: parsing other people's files, and deciding what a file is. Tag parsing runs against byte fixtures built inside the tests, so a fixture cannot drift from the format it claims.

    Lyric lookup is the one thing that opens a connection

    Choir holds the internet permission for it and nothing else, and while it is off nothing in the app touches the network. Switch it on and what leaves the device is a track's title, artist and length, sent to the service you picked — nothing about you, and nothing about the rest of your library.

  6. Basalt

    0.2.0 August 2026

    Seven palettes, and a test suite under the alarm engine.

    • Seven themes, chosen in Settings → THEME: Basalt, BREM, Copper, Latte, Mocha, Quartz and Solar. The picker draws each one as a swatch in its own colours, because "BREM" is not a colour anyone can picture from the word.
    • Quartz is a genuine light theme rather than an inversion — the bezel's specular edge moves from the top of a panel to the bottom, and the system bar icons flip with it, or a raised panel would read as a recessed one.
    • Every palette is contrast-checked by test, per role: 4.0:1 for text, 3.0:1 for accents. Writing that test found four tokens under the bar, one of them in the default palette, where it had shipped in 0.1.0.
    • 137 JVM unit tests, over next-occurrence walking, the repeat mask, daylight saving in both directions, timer and stopwatch arithmetic across process gaps, the glyph fold, and the alarm lifecycle decisions. No device or emulator needed for any of them.
    • Room's destructive fallback is gone. The schema is exported and committed, and a change with no matching migration throws on open instead of quietly deleting your alarms.

04 — Transfer

The Yumeshipping three speak the same file

A character written in one can move to another. The carrier is a .dexpack — a small zip holding a manifest, the entries, and their artwork. Nothing in it names the app that wrote it.

Tera .trbz
WaifuDex .wdex
UriDex .rdex

Tera never throws anything away

It has no column for an element, so an incoming element does not get dropped — it is written into the partner's description as a labelled line. So does anything else it has no field for, including keys invented by a future version of the format.

- **Element:** fire
- **Pronouns:** she/her

The dex keeps only what it can hold

A dex entry is a fixed shape: name, species, element, tags, age, world, lore, one picture. Anything outside that shape is dropped on the way in rather than smuggled somewhere it does not belong. An entry arriving with no element becomes normal; with no tags, tera.

Only the entry's own artwork travels. Galleries, conversations and alarms stay where they are.

  • Importing only ever adds. A pack cannot wipe your library — that is what the app's own backup format is for.
  • Collisions ask. Matched by name, and every clash stops for a choice: skip, replace, or file alongside. The default is skip, the only choice that cannot lose something.
  • Tap the file. Every format is registered with Android, so opening one from a file manager — or sharing it from another app — lands in the right screen.

05 — About

A phone was supposed to be a personal computer

I am Auriel Solaris, and I make these for fun. For self-indulgence, honestly. There is no roadmap, no growth plan, and nobody to answer to — which is exactly the point.

Somewhere along the way a phone turned into a delivery mechanism: for feeds, for engagement, for whatever a company decided you should look at next. Everything on this page is a small argument against that. Your things, on your device, answering to you.

The second family is the same argument pointed at Android itself. The launcher, the music player, the keyboard and the clock all still exist in AOSP, and none of them ships on a phone you can buy — what does ship in their place wants an account, a feed, or your keystrokes. Eden, Choir, Hieroglyph and Basalt are those four, taken back out and rewritten in Kotlin.

So every app here works with the plane on. Nothing syncs, nothing phones home, there is no account to make and no analytics watching you use it. Three of them can open a connection, each for exactly one thing you asked for and each named on its own page: the two dexes can fetch an offline voice model, Choir can look up lyrics if you switch it on, and Hieroglyph refreshes its emoji font. Nothing else touches the network.

Six of the seven are open source, because software you keep your life in should be software you can read. The seventh is not, and I would rather say so plainly than pretend otherwise. One of the six, Hieroglyph, has no public repository yet — it is MIT and it will be readable, but not until there is something worth reading.

  • Offline firstNot "offline supported". There is no server to be offline from.
  • Nothing to sign up forNo account, no profile, no analytics, no telemetry.
  • Your file, your formatEvery backup is a plain zip you can open yourself.
  • Additive migrationsOld backups keep restoring. Schema changes never delete.
  • Honest about limitsWhere a transfer loses something, the app says so first.