What's next

OMLA Implementation Roadmap

Every gap we know about. Each item has a status, a priority, a design sketch, and a rough complexity estimate. Things already shipped are at the top for context; open work is below. The full behavioural spec this roadmap is closing against lives on the Technical Details page.

Legend: Shipped built + deployed · In Progress code landed, not deployed · Planned designed, not built · Proposed open design question.
Priorities: P0 launch-blocking · P1 within 30 days · P2 within 90 days · P3 nice to have.

Shipped

Here for context. Details in the technical docs.

Shipped Registration flow (Ed25519 + Bech32m + lineage + splits + sign)

Six-step browser-side flow, real tweetnacl keypairs, real Bech32m addresses, writes through RLS. /register.html

Shipped Public registry with model detail

Searchable registry with lineage SVG, resolved splits table, compliance badge, invocation snippet, copy-to-clipboard everywhere. /registry.html

Shipped Creator dashboard

Models, wallets, earnings. Quarterly bar chart + payment ledger. /dashboard.html

Shipped Commercial-user flow

Company registration with API-key hashing, quarterly report submission with auto-royalty, report history. /commercial.html

Shipped Complaint intake + compliance explainer

Public complaint form, six-state compliance machine, stub blacklist. /complaint.html

Shipped Edge Function set (stubs)

submit-report, compliance-tick, quarterly-payout (DRY_RUN default), publish-blacklist — source + READMEs in omla-deploy/backend-services.

P0 — Launch-blocking

Items the site cannot responsibly go live without.

Planned G2 — Mutation signatures

Priority P0 · Complexity M · Owner: operator + schema

Today, wallet / split / lineage updates are authorised only by RLS email match. A compromised email = full control. Each mutation should also carry an Ed25519 signature from the model's creator keypair and be server-verified.

Design: add update_signature BYTEA + update_nonce BIGINT columns to wallets, contribution_splits, lineage_edges. Server-side trigger uses pgsodium (or a small edge function proxy) to verify the signature against the row's owning models.ed25519_pubkey. Reject on failure. Client sends the signed payload via an Edge Function that pre-validates before the DB write.

Planned Stripe Connect integration (live)

Priority P0 · Complexity M

Rails are stubbed. At least one rail must be live to pay creators.

Design: wire backend-services/edge-functions/quarterly-payout to Stripe Connect via stripe-node. Use Transfer.create with idempotency key. Webhook endpoint stripe-webhook updates payments.status to completed/failed/reversed. Creator onboarding flow on /dashboard-wallets.html for rail='stripe' wallets — redirect to Stripe Express onboarding, capture acct_… on return.

Planned G11 — Admin console

Priority P0 · Complexity M

Board review is currently "open a SQL Editor tab". Too error-prone for a moderator that isn't a database engineer.

Design: /admin.html password-gated via a board-member Supabase account with a service-role proxy Edge Function (never ship service-role key to browser). Flows: triage complaints, resolve/dismiss/blacklist, manually transition compliance state, redact audit log fields for GDPR, re-run quarterly payout for a specific report.

P1 — Within 30 days

High-impact items that make the system usable at scale.

Planned Automated 24h complaint notification

Priority P1 · Complexity S

The license promises 24-hour holder notification. Today it requires someone to read the complaints table daily.

Design: an Edge Function notify-complaints runs hourly, finds complaints rows where notified_at IS NULL, sends email via Supabase's auth.admin.sendEmail() or a transactional provider (Postmark / Resend), stamps notified_at. Cron-scheduled; idempotent via the notified_at check.

Planned G4 — Usage-report disputes

Priority P1 · Complexity M

A creator who thinks their model earned more than was reported has no in-system recourse.

Design: usage_disputes table keyed by report_id with reason, proposed_revenue_usd, proposed_cost_usd. Opening a dispute flips the report's status to 'disputed' and pauses that report's portion of the next payout. Board arbitrates; resolution writes the accepted numbers back and re-flips status.

Planned G3 — Key rotation / recovery

Priority P1 · Complexity L

Lost secret key = permanent loss of ability to update. Today: email-based manual recovery by the board.

Design: a second "recovery" Ed25519 pubkey registered optionally at creation. Either key signs updates. A timelocked models.pubkey_rotation_pending allows a 7-day challenge window; at end of window, rotation completes unless challenged. Lost-both recovery is an off-system legal process.

Proposed G9 — Integration SDKs

Priority P1 · Complexity M

Commercial users today paste JSON. SDKs drop the bar to ~10 lines.

Design: two tiny libs. omla-sdk-js: const omla = createClient({anonKey, url, apiKey}); await omla.report({quarter, entries}). omla-sdk-python: same. Published to npm + PyPI. Repo lives alongside omla-deploy.

Proposed G10 — Hugging Face / Civitai sidecar

Priority P1 · Complexity S

A JSON sidecar that model hubs can host alongside weights. When someone views your model on HF, an OMLA badge shows the wallet + compliance state.

Design: standard omla.json file format with model_id + pubkey + wallet + license_version. Client-side JS snippet that HF / Civitai UIs can include; pings /rpc/verify_by_hash and renders a badge.

P2 — Within 90 days

Operational polish and compliance features.

Proposed G5 — Multi-currency payouts

Priority P2 · Complexity M

All ledger fields are USD; actual payouts settle in local currency.

Design: add payments.settled_currency, payments.settled_amount, payments.fx_rate_used. New fx_rates table populated from the rail's settlement data. Reconciliation report flags drift > 2%.

Proposed G6 — Withholding & tax forms

Priority P2 · Complexity M

US creators > $600/yr need 1099-MISC; non-US need W-8BEN. Rails will eventually require this.

Design: tax_forms(wallet_id, kind, filed_at, expires_at, document_ref). Payout pipeline skips wallets lacking a valid form when year-to-date total crosses the threshold; accumulates in dust_credits until filed. Annual 1099 generation via Stripe's 1099-K service or a paid Tax SaaS.

Proposed G7 — Creator audit rights

Priority P2 · Complexity L

Creators have no tool to challenge a commercial user's self-declared numbers.

Design: a request-respond flow. Creator submits audit_request(report_id, reason). Commercial user must reply with evidence_uploads (CSV export from Stripe, cost accounting, etc.) within 14 days, else report flips to 'disputed' and payout pauses. Board can compel or waive.

Proposed G8 — Sybil / bot prevention

Priority P2 · Complexity S

Anyone with a free email can register unlimited models and pollute the registry.

Design: Cloudflare Turnstile challenge on /register.html + per-IP rate limit (3 registrations / day) via Upstash Redis in an Edge Function. Legitimate creators stay well under the cap.

Proposed G12 — Public transparency dashboard

Priority P2 · Complexity S

Trust grows with transparency. Publish aggregate numbers.

Design: /stats.html reads a materialized view refreshed hourly: total models (by compliance state), total commercial users, lifetime paid out, quarterly paid / denied / blacklisted counts, top 10 rails by volume. No PII.

P3 — Nice to have

Proposed G13 — Internationalization

Priority P3 · Complexity L

English only today. The audience is global.

Design: per-language string dictionaries under i18n/{lang}.json. data-i18n="key" attributes on HTML elements; a loader swaps text at page load. License translations are advisory until board-approved.

Proposed G15 — Asset kinds beyond models

Priority P3 · Complexity L

Datasets, likenesses, art styles — same royalty/split/compliance machinery.

Design: migration adds assets.asset_kind ENUM('model','dataset','likeness','artwork') defaulting to 'model'. Per-kind royalty_rate. Registry page grows a type filter. License text gets kind-specific §3 addenda.

Proposed Community forum

Priority P3 · Complexity S

Creator + commercial-user feedback loop.

Design: GitHub Discussions (free, already paid for), linked from the site footer. No forum software to run.
Want to help? Pick any item above, send a note to hello@omla-ai.org, and we'll talk. No gatekeeping, no "first, tell us why you'd be a good fit" — if you want to fix G7, G7 is yours. We'll happily name the whole item after you in the commit log.