Submitting for Review
How to publish a version of your Agent App and submit it for internal review.
Publishing a Version
After registering your Agent App, the next step is to publish a version. Publishing creates a version record in app_versions with status in_review.
Via the API
Send a POST request to the agent-app-publish edge function with your bundle info:
curl -X POST "${SUPABASE_URL}/functions/v1/agent-app-publish" \
-H "Authorization: Bearer ${AUTH_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"slug": "my-app",
"version": "1.0.0",
"changelog": "Initial release with weather forecasting",
"bundle_url": "https://your-cdn.com/my-app/1.0.0/index.html",
"bundle_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"bundle_size": 524288
}'Required Fields
| Field | Description |
|---|---|
slug | Your app's slug (must be already registered, and you must be the owner) |
version | Semantic version, e.g. 1.0.0, 2.1.0-beta |
Optional Fields
| Field | Description |
|---|---|
changelog | What changed in this version |
bundle_url | URL where the host can download the web bundle |
bundle_hash | SHA256 hash of the bundle file (for integrity verification) |
bundle_size | Bundle size in bytes |
Required Environment Variables
export SUPABASE_URL="https://your-project.supabase.co"
export AUTH_TOKEN="your-auth-token" # From Supabase AuthBundle Upload
Before calling the publish API, upload your bundle to any publicly accessible URL. Common options:
- Supabase Storage — upload via Supabase dashboard or CLI
- S3 / CloudFlare R2 — any object storage with public read
- CDN — any CDN with a stable URL
- GitHub Releases — attach the bundle as a release asset
The host app downloads the bundle from the bundle_url you provide and verifies the bundle_hash before loading.
# Compute SHA256 hash of your bundle
sha256sum dist/index.htmlValidation Rules
- slug: Must reference an existing app that you own (
developer_idmust match your user ID) - version: Must follow semantic versioning format (
x.y.z, e.g.,1.0.0,2.1.0-beta) - Duplicate versions: Returns HTTP 409 if the version already exists for that app
What Happens After Publishing
- A new row is created in
app_versionswith statusin_review - If the app was in
draftstatus, it is moved toin_review - The version enters the review queue
- A reviewer will evaluate the submission (see Review Process)
- Once approved, the version status becomes
publishedand the app is available to all users
Version Lifecycle
draft → in_review → approved → published (approved by reviewer, then made live)
→ rejected (rejected by reviewer)
published → deprecated (superseded by newer version)Note: The
approvedandpublishedstates are separate —approvedmeans the reviewer accepted the version, andpublishedmeans it has been made available to users. In practice, approved versions are automatically published.
Updating Your App
To release a new version:
- Build a new bundle with your changes
- Upload the bundle to a new URL (or overwrite the existing one)
- Call the publish API with the new version number:
curl -X POST "${SUPABASE_URL}/functions/v1/agent-app-publish" \ -H "Authorization: Bearer ${AUTH_TOKEN}" \ -H "Content-Type: application/json" \ -d '{ "slug": "my-app", "version": "1.1.0", "changelog": "Added dark mode support", "bundle_url": "https://your-cdn.com/my-app/1.1.0/index.html", "bundle_hash": "<new-sha256>", "bundle_size": 530000 }' - Each new version goes through the review process independently
- The host app always loads the latest
publishedversion