Skip to main content
Get your app into the uOS App Store in five steps. You host the app. uOS fetches your manifest and lists it for install.

Step 1: Host your app

Deploy a public website on your domain (not the uOS origin). Mini Apps run in a sandboxed iframe on your origin; that domain is the trust boundary. Your app URL becomes entry.url in the manifest. It must stay on the same host as the manifest. Localhost and private hosts are rejected.

Step 2: Add the manifest

Serve JSON at https://your-domain/.well-known/uos-app.json with no redirects:
Required for a valid manifest: name, entry.type ("iframe"), and entry.url (public http:/https:, same host as the manifest). Required for Dev Portal publish: author.wallet must equal the wallet you connect and sign with. See the full manifest reference for icons, screenshots, tags, price, and the optional verified-author signature.
uOS fetches the manifest with a 5 second timeout, a 512 KB size cap, and redirect: 'error'. The well-known URL must respond directly with JSON.

Step 3: Open Dev Portal

In uOS, open Dev Portal from the dock and connect your wallet from the menu bar.
Dev Portal: Publish tab with your apps list and domain field

Step 4: Publish

  1. Confirm author.wallet in your manifest matches the connected wallet.
  2. Enter your domain (for example pay.example.com).
  3. Click Publish.
  4. Sign the free message in your wallet (no gas; this is a message signature, not a transaction).
Self-serve publish goes live in the App Store immediately (registered as approved). Re-publishing the same domain refreshes the existing catalog entry in place (one catalog entry per domain). The signed publish message is:
Unpublish uses the same template with action: unpublish. issued-at must be within 10 minutes of server time in either direction (stale and far-future timestamps are rejected). Publish/unpublish is rate limited to 10 requests per 60 seconds per wallet and per client IP.

Step 5: Users install from the App Store

Anyone can open the App Store, find your app, and install it. That adds a desktop icon. Installed apps sync to the user’s account when they are signed in (wallet SIWE session), not merely connected.
App Store: featured apps with Get / Installed / Pre-installed
Selecting an app opens details: description, domain, author verification, permissions, and screenshots.
App details: permissions review before Install
Tapping Install adds the app to the desktop and pins the permission set the user just reviewed. Later permission additions require re-consent on open.
Install complete: the app is ready to open from the desktop

Checklist

  • App is hosted on your own domain (not the uOS origin)
  • /.well-known/uos-app.json is reachable with no redirects
  • entry.url is on the same host as the manifest
  • author.wallet matches your Dev Portal wallet
  • Only the permissions you need are listed
  • Optional: domain-association signature for the Verified badge
  • Optional: load the App SDK and call uOS.ready()

After you’re live

  • Update: change the manifest on your domain, then hit Update in Dev Portal (bump version if you want the store to show a new version string)
  • Analytics: one-time 10 USDC unlock for installs, opens, retention, and related metrics
  • Settings: set a payout wallet for future app-purchase revenue (defaults to author.wallet; changing it requires a fresh signature and takes effect after 72 hours; resetting to the publisher wallet is immediate)
For wallet, filesystem, and window APIs inside your iframe, see the App SDK.