Model registration

Publish Your Model

Publish a signed manifest: your model's identity, lineage, royalty split, and public payment pointers. Six steps — takes about 5 minutes.

Cover graphic: an upload arrow into a signed model card with a green check — sign it, ship it
No custody. No knowledge. OMLA publishes your signed manifest and nothing else. Commercial users meter their own usage, resolve payee percentages with the open resolver, and pay each wallet directly. OMLA never holds, receives, moves, routes, escrows, converts, refunds, or transmits any payment — and keeps no records of usage, payers, or payments. See the authoritative No-Custody & Financial Disclaimer, which governs.
Sign-in required. Creating a registration writes to the live registry, which is gated by row-level security. Sign in or create an account before Step 6.
1Identity
2Keypair
3Lineage
4Payees
5Split
6Review

Step 1: Model Identity

Identify your model. The SHA-256 hash of your model weights anchors the registration cryptographically.

Why a name, description, and weight hash?

Three fields, three different jobs:

  • Name & description are human-readable and appear on your model's public registry page. Choose something discoverable — don't just call it "MyModel".
  • SHA-256 hash of the weights is a 64-character digest computed over the exact bytes. The v5 signature binds it to your account, key, accepted License artifact, and manifest; it identifies bytes but does not by itself prove copyright ownership.
  • Source URL (optional) points commercial users at where to download. Hugging Face, Civitai, your own S3 — doesn't matter. OMLA does not host the weights.

If your model is a quantization or adapter of a larger base, hash the bytes that ship together with this registration — not the base model. You'll declare the relationship to the base in Step 3.

Compute with: sha256sum your-model.bin or use the file picker below to hash in-browser.
File never leaves your device. In-browser hashing is limited to 64 MiB; use sha256sum for larger weights.

Step 2: Ed25519 Keypair

Your model registration is signed with an Ed25519 keypair generated locally. The public key enters the registry; the secret is downloaded only inside an encrypted omla-creator-key-v1 bundle.

What is this keypair for and how do I keep it safe?

Ed25519 is a fast, modern digital-signature scheme. It produces very small keys (32-byte public, 64-byte secret) and very short signatures (64 bytes). The browser generates your keypair locally; nothing is sent over the network.

Three places the keypair matters:

  1. Registration signature. You'll sign the final manifest — identity, weight hash, License acceptance, split, payees, and pointers — so anyone can verify the record was created by you.
  2. Signed manifest updates. Changing your pointers or split later means signing a manifest-update message with this same key — no signature, no change.
  3. Proof of key control. A challenge signature proves control of the registered key. It does not by itself prove authorship, rights, lineage, or control of a payment destination.

Safe storage: keep two offline copies of the encrypted bundle, separate from its passphrase. Never commit either to git or send either through chat or email. OMLA never receives the secret and cannot recover the bundle or passphrase; email alone is not cryptographic recovery.

Normal browser flow: Ed25519 only. Hybrid Ed25519 + ML-DSA-65 remains available to advanced API/CLI clients; the browser will not claim post-quantum protection until an audited ML-DSA implementation ships.
Choose a strong passphrase, then generate and download your encrypted creator-key bundle. Generation and encryption happen locally.

Step 3: Lineage Declaration

Declare the OMLA-registered models yours is built on, and how. The relationship type sets the License v2.0 cap on what your model may retain in Step 5 — everything above the cap flows upstream.

How does lineage set the money flow?

Each relationship carries a retention cap from License v2.0 §3 — the most your model may keep of anything that arrives at it:

  • Fine-tune — retain at most 5%. The base did most of the heavy lifting; you shaped the behavior.
  • Quantization — retain at most 2%. You changed the efficiency profile, not the capabilities.
  • Distillation — retain at most 10%. A new artifact, trained on the parent's outputs.
  • Merge — retain at most 10%, with the upstream share divided across the merged parents.
  • Training from scratch. Leave the lineage section empty. This is original work — your model retains 100%.

With multiple parents of mixed relationships, the highest cap among your edges applies. The split is recursive: what you send upstream is divided again by each parent's own published split, so most of the money reaches the original creators.

Non-OMLA bases (like Meta Llama, Stable Diffusion) can't receive royalties through OMLA — but you should still declare them in your model card for transparency. A future field will capture these as informational external lineage.

Recursive by design: your upstream share flows to each parent, and each parent's own published split forwards most of it onward. You set the exact percentages in Step 5 — the caps here just bound what you may keep.
No upstream models? Leave this blank if your model is original work — it retains 100%, and the payees you name in Step 4 share all of it.

Step 4: Payees & Public Payment Pointers

Who gets this model's retained share, and how payers reach them. Each payee is an omla1 wallet — a stable Bech32m routing identifier — carrying 1–8 public payment pointers: Lightning, on-chain BTC, ETH, SOL, a Stripe Payment Link, PayPal.Me, or your own invoice URL.

Pointers are public. Everything you enter here is published in the registry for anyone to read — that's how payers pay you without OMLA in the middle. Never paste bank account numbers or anything private; for private fiat rails, point an invoice URL at your own payment page instead.
Which pointer should I add?
  • Lightning address or BOLT12 offer (recommended) — instant, near-zero fees, works like email. Get one from any Lightning wallet or service.
  • BTC / ETH / SOL addresses — plain on-chain destinations. On Ethereum, the same address receives USDC and other ERC-20 stablecoins.
  • Stripe Payment Link / PayPal.Me — hosted fiat links; the payer opens the link and pays card-to-you or account-to-account.
  • Invoice URL or mailto — your own invoicing page or billing address. Put private fiat rails (bank transfers, invoicing services) behind it.

The omla1… address itself never moves money — it's the stable identifier your pointers hang off, and it stays the same when you rotate pointers later with a signed manifest update from your dashboard.

Payee shares divide this model's retained slice — solo creators use one payee at 100%; teams, funders, or charities each get their own payee and the shares must total 100%.

Total: 0%

Step 5: Split — Retained vs Upstream

Decide how anything that arrives at this model divides: what it retains for its payees, and what flows to each upstream parent. Retained plus upstream must total exactly 100%.

Why is my retention capped?

Because most of a derivative's value comes from the models it builds on. License v2.0 §3 caps what each relationship may retain (fine-tune 5%, quantization 2%, distillation and merge 10%), and the rest flows upstream — where each parent's own published split divides it again, all the way to the original creators.

Worked example: $100 arrives at a fine-tune retaining 5%. Its payees share $5; $95 flows to the base model and is divided by the base's own split. Original models retain 100% of whatever reaches them.

Each upstream parent must get at least 0.01%. The live preview below runs the real resolver on your draft manifest so you can see the final per-wallet outcome before you sign it.

Most of the money flows to the original creators. A fine-tune retains at most 5% — the rest flows upstream through the lineage.
Total: 0%

Where $100 goes

Live preview, computed with the open resolver on your draft manifest plus each parent's published manifest.

The $100 preview appears when payees, retained, and upstream shares each total 100% and pass the cap check.

Step 6: Review & Sign

Review your manifest. When ready, import your encrypted creator-key bundle and enter its passphrase. Decryption and Ed25519 signing happen only in memory; one signature covers your identity, weight hash, accepted License, and manifest hash.

What exactly am I signing, and what happens when I submit?

You're signing the canonical v5 registration message: model name, account id, algorithm, public key set, SHA-256 weight hash, exact License version and artifact digest, timestamp, and the SHA-256 hash of your canonical manifest — so the split, payees, and pointers you reviewed are exactly what gets published under your signature.

On submit (live mode):

  1. The browser POSTs the v5 signed request to the register-model Edge Function with your user JWT.
  2. The function verifies the signature, re-derives the manifest hash server-side, and rejects on any mismatch.
  3. Database triggers validate no lineage cycles, the retention cap, exact 100% totals for both split and payee shares, pointer formats, and unique key fingerprint.
  4. Registry status starts as ACTIVE and the model enters the next signed snapshot.
  5. The success result shows the model UUID, manifest hash, and registry-page link.

In preview mode, submit downloads an unsigned draft for manual review. It is not a verified registration because v5 binds a live account id and exact License artifact.

Model Identity

Name
Domain
SHA-256 Hash

Cryptographic Identity

Public Key
Licensev2.0 (2026-07-16)

Manifest

Lineage
Split
Payees
Manifest hash
The secret is decrypted only in memory to sign, then temporary byte arrays and these inputs are cleared as practical. It is never sent to OMLA.
What happens on submit: the Edge Function verifies the v5 signature and manifest hash, then atomically creates the model, immutable weight hash, append-only License acceptance, payee wallets with public pointers, lineage, split, and ACTIVE registry status.
Preview path: If Supabase is not configured, Submit downloads an unsigned draft for manual review at verify@omla-ai.org.