A cloud-hosted vault for the StoaChain/Ouronet ecosystem. The Codex is your single instrument for managing every cryptographic asset on chain; Mnemosyne is where that Codex lives, syncs across devices, and reaches every Codex Consumer app you use.
Secure your vault with seed words in your own language — no fixed English wordlist, any glyph in the Dalos Character Set. Memorize a phrase that actually means something to you.
The operator cannot decrypt your Codex with anything it holds. Cryptographic impossibility for self-custody modes, documented operator-trust trade-offs for accessibility-first modes.
Pay once to pin your encrypted Codex to Arweave. The StoaChain stores the pointer. Even if Mnemosyne disappears entirely, you recover with just your seed and a chain read.
One Codex, many apps. OuronetUI, AncientHoldings, the upcoming Demiourgos Streaming Platform — every Codex Consumer reads the same Codex. Switch devices freely.
The Codex is the single entity that holds everything cryptographic you have on StoaChain and Ouronet. One file. One vault. Encrypted on disk, decrypted only in your browser. Everything an account, key, or identity needs to be controlled lives here.
Store as many seed sets as you need. Koala (24-word), Chainweaver (12-word), and Eckowallet seeds are all supported.
Standard accounts (Ѻ.xxx) and Smart accounts (Σ.xxx) alike. Mint as many as you need; the Codex tracks them all.
Store any number of StoaChain public keys and their corresponding k: accounts. You can also observe any other named StoaChain account (k:, c:, u:, w:) for read-only viewing.
Add keys to a seed word set continuously (positions 0, 1, 2, …) or jump straight to any specific position you need. Your seed sets are not fixed-shape — they grow as you do.
Store standalone Stoa keypairs that aren't derived from any seed phrase. The keypair IS the entity — useful for one-off accounts, ephemeral signers, and system keys like the CodexGuard.
As many Ouronet and StoaChain accounts as you want to remember — friends, business contacts, common destinations. Tagged, searchable, ready when you need them.
Each recognised Codex Consumer (OuronetUI, AncientHoldings, future apps) stores its own settings inside your Codex — interface preferences, node choices, feature flags. One Codex, many apps, consistent preferences everywhere.
The Codex is the single entity holding every cryptographic asset you have on StoaChain/Ouronet. Architecturally, the same model could be extended to support any other seed derivation scheme and any other blockchain's address types — but for v0.1 the scope is StoaChain/Ouronet.
Three paths into Mnemosyne, orthogonal to your mode choice. The wizard adapts.
You have nothing yet. The wizard generates everything from scratch — Codex Identity, CodexPrime Standard Ouronet Account, on-chain registration, the lot.
You already have an OuronetUI Codex in your browser. The wizard reads it, adds the Mnemosyne-only pieces (Codex Identity, CodexGuard), uploads. The hard-cutoff migration preset uses this.
You have a JSON backup of a Codex (OuronetUI export or Mnemosyne export). Upload, decrypt locally, re-encrypt under Mnemosyne, done.
Every Codex creation walks you through these three choices. Each has an "I-don't-care-just-do-it" autopilot variant and a "I-want-to-pick-this-myself" custom variant.
₱.STANDARD:Π.SMART). Autopilot: 24 random Dalos words. Custom: bring your own words, bitstring, bitmap, base-10 or base-49 scalar.The ladder runs from maximum sovereignty to maximum convenience. Mode 1 is the secure base everyone gets — login proves you possess a key, never a server-side password. Each mode above only adds a more familiar (and weaker) door; it never removes a strong one. Switch modes later without re-encrypting the Codex. v0.1 ships Modes 1–3; Mode 4 (phone/SMS) is deferred to v0.2.
The secure base — key possession, zero personal information
No username, password, email, or phone. The only ways in are things you possess: a device passkey for daily login, your Standard key to set up a new device, and either seed to recover. Two independent seeds, so losing one is survivable.
strict self-custody · for everyone
A familiar web2 door, opt-in
Adds the username + password login mainstream users expect — a convenience door, never a recovery root, and honestly the weakestdoor in your Codex. All of Mode 1's strong doors stay; forget the password and you reset it with a seed, never via the operator.
strict self-custody · web2 familiarity
Recover without your seed
Adds an email-based recovery path. At signup, Mnemosyne emails you a one-shot Email Recovery Secret; "Forgot access" then works without exposing anything the operator can decrypt. Email is for recovery, not login.
hybrid (user-held paths) · seed-free recovery
Grandma-tier accessibility — deferred to v0.2
Not in v0.1. The planned addition: phone identity, an SMS Recovery Secret, and personal-facts recovery for the most accessible onboarding. Deferred to v0.2 — running an SMS stack is operationally heavy, so it ships once the streaming platform genuinely needs it.
hybrid, accessibility-leaning · non-technical users
Every mode keeps all of Mode 1's strong doors (passkey + seeds) and only adds weaker, more convenient alternatives — never removing one. Your two seeds are always recovery roots and can never be removed; the encrypted Codex blob is byte-identical across all your mode changes.
Mnemosyne separates the storage layer from the trust anchor. Your encrypted Codex lives in the database (always) and optionally on Arweave (opt-in, paid). The StoaChain stores the immutable identity entry plus a pointer to your latest Arweave backup.
The ouronet-ns.CODEX Pact module on StoaChain. Holds your Codex Identity registration (immutable), your CodexGuard (rotatable), and pointers to all your Arweave backups (append-only history).
Cost: tiny gas per pointer update. Trust anchor: CodexGuard signs all mutations. Censorship-resistant: any Mnemosyne-compatible client can read.
Per-Codex encrypted blob, paid once via Bundlr/Irys, stored forever. The StoaChain pointer tells the world which Arweave tx-id is canonically yours.
Cost: one-time AR payment per upload, no recurring. Encryption: same Codex Key that wraps L1. Use case: disaster recovery if Mnemosyne ever disappears.
Live encrypted blob, mutated on every Codex change. Server-side PostgreSQL. Single concatenated format: wraps + encrypted Codex in one binary file.
Cost: Mnemosyne operational. Deletable on user request (the European General Data Protection Regulation's "right to be forgotten" actually works here).
Why three layers? L1 alone is a standard cloud service (fast, but its operator dying means data lost); L2 adds a backup; only L3's chain pointer proves which Arweave blob is canonically yours. Full storage architecture →
Every Codex has a public identity on the StoaChain. It's a pair of Apollo-curve keys — a Standard key for daily operations and a Smart key that serves as both a cold guardian and a second recovery root. Each comes from its own independent seed.
One factor authorizes (unlock + daily ops):
any passkey · or Standard key · or Smart key
Standard + Smart cosign required:
anything that expands the trust surface
The Codex Identity is built on the Apollo Elliptic Curve — our own cryptographic curve, designed and implemented for the StoaChain/Ouronet ecosystem and shipped as part of the @ouronet/dalos-crypto package. Apollo gives us the derivation properties we need (deterministic keypairs from arbitrary entropy, Schnorr signatures, address-format glyphs) without depending on any external curve library.
Apollo addresses use distinct prefix glyphs: ₱. for Standard, Π. for Smart. A complete Codex Identity therefore reads ₱.STANDARD:Π.SMART — two pubkeys, one identifier, mirroring StoaChain's own Standard/Smart account model.
Apollo signatures are verified off-chain (in Mnemosyne's web app and backend). On-chain signing uses the Stoa-native ED25519 curve via the CodexGuard key. The two curves serve different layers and don't compete.
Deep dive: The Apollo Elliptic Curve → · The Dalos Character Set →
With 2048 bits of entropy per Codex Identity (1024 per Apollo half), the total number of distinct possible Codex Identities is 22048 — roughly 10616.
For context: the observable universe contains an estimated 1080 atoms. The number of possible Codex Identities exceeds the number of atoms in the observable universe by a factor of 10536.
Put differently: if every atom in the observable universe were itself an entire observable universe, and every atom in those universes were themselves observable universes, and you repeated this nesting six more times — the total atom count would still fall vastly short of the Codex Identity space.
Random collision between two Codex Identities is not "extremely improbable" — it is unphysical. The space is too large for the universe to fit examples of, let alone two that match.
Apollo signatures verify off-chain in Mnemosyne's app and backend, enabling cross-domain identity proofs (sign-in-with-Codex, session tokens, StoicTag messaging) without chain calls. Off-chain Schnorr verification →
Optional convenience: tie a name like §bytales to one of your Ouronet Accounts. Lives on the StoaChain. Codex-agnostic — works without Mnemosyne entirely. Anyone can register; cost-gated by a STOA fee, no operator gatekeeping.
One per Ouronet Account — strict bijection enforced on chain
Any Dalos glyph, 3–256 in length — your name in your language
Releasable by the current account owner — frees the name for re-registration
Three-layer stack (StoicTag → Ouronet Account → Payment Key) · Character set details · Typing § per OS · Pact module reference
Cryptographic guarantees are real. Operational risks are standard for the zero-knowledge cloud-storage pattern and accepted as part of the trade-off.
| Action | Self-custody modes (1, 2) | Hybrid modes (3, 4) |
|---|---|---|
| Decrypt your Codex from server data alone | Impossible | Impossible (Modes 1–3) / Possible if facts weak (Mode 4) |
| Initiate a password reset on your behalf | Impossible — would require forging a Schnorr signature | Possible if operator controls email or SMS channel |
| Tamper with Codex contents undetectably | Detected on next decrypt (authenticated encryption) | Same |
| Refuse to serve you (denial of service) | Possible — but you have your seed; self-host or migrate | Same |
| Brute-force your password from the verifier | N/A in Mode 1 (no password) · Theoretically in Mode 2 — Argon2id makes it slow for weak passwords, infeasible for strong | Same as Mode 2 |
| See which Codices exist | Yes— metadata isn't encrypted, only payload | Same |
Authenticated encryption for the Codex blob. Standard. Unbreakable in any relevant time horizon without the Codex Key.
Modern password-hashing function. Tunable to be slow and memory-expensive. Winner of the 2015 Password Hashing Competition.
Our own elliptic curve with Schnorr signatures, verified off-chain. Two halves (Standard + Smart) enable tiered authorization without needing on-chain Apollo verification.
Mnemosyne is in the design-locked phase. Implementation begins after v0.3.0 of the @ouronet/ouronet-codex package ships.
ouronet-ns.CODEX Pact module