Android · offline first · no accounts

Small apps for imagined people.

I build small, private, offline-first apps for the people who only exist because someone imagined them — and then I give them somewhere to live.

Three apps

Two you can have. One you cannot — it is here because it is where the other two came from.

Tera

Somewhere for the people you have imagined to live.

A private, offline-first companion app for fictional partners, worlds and lore.

  • Version0.4.0-beta
  • LicenceAGPL-3.0-only
  • NeedsAndroid 12 and up

WaifuDex

A Pokédex for the characters you love.

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

  • Version1.0.0
  • LicenceMIT
  • NeedsAndroid 12 and up

UriDex

The same dex, kept to myself.

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

  • Version1.0.0
  • LicenceAll rights reserved
  • NeedsAndroid 12 and up
Look inside Private build — no download

They all speak the same file

A character written in one app 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.

About

I am Auriel Solaris. I write software for a small and specific thing: keeping track of characters — their worlds, their lore, the relationship you have with them — without handing any of it to a company.

So every app here works with the plane on. Nothing syncs. Nothing phones home. There are no accounts to make, no analytics, and no telemetry. The only copy of your data that leaves your phone is a file you exported and moved yourself.

Two of them are open source, because software you keep your life in should be software you can read. The third is not, and I would rather say so plainly than pretend otherwise.

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