GridNexa
Documentation homePublish an application
MARKETPLACE / PUBLISH

Publish an application

Turn the five-step wizard into a verifiable creation, runtime, experience, review, and release workflow.

Last updated: 2026-09-29Documentation v1
01

Before you publish

Decide the runtime, public operations, and user experience before entering the wizard.

  • Prepare a stable name and slug.
  • Prepare an external HTTPS endpoint or pullable image.
  • Choose Load Balancer or Queue for hosted apps.
  • List operations, examples, and expected durations.
  • Prepare listing media, support information, and pricing.
02

Step 1: Basics

Enter the name, slug, tagline, and full description. Treat the slug as a stable identifier. Explain inputs, outputs, limits, and billable behavior in the description.

03

Step 2: Runtime

Choose External API or platform hosting, then Load Balancer or Queue for a hosted release. Configure the image, port or handler, timeouts, workers, and environment.

  • Validate the HTTPS endpoint for External API.
  • Validate port, health, and operation paths for LB.
  • Validate SDK registration, heartbeat, handler, and results for Queue.
  • Provide secrets through environment or secret configuration rather than the image.
  • Create and verify a new release after runtime changes.
04

Step 3: Pricing

Set a non-negative invocation price and optional free allowance. Pricing should match actual operations and disclose any secondary costs the application may incur.

05

Step 4: Listing and experience

This step configures both Marketplace listing media and the interactive entry users open. Icons, screenshots, and category shape the product detail page. Experience settings decide which frontend opens after Use now.

A Gradio template and a self-hosted frontend are two frontends for the same agent application. They are not two runtimes and not two model-invoke paths. Runtime (External / Load Balancer / Queue) is chosen in step 2. Experience is configured here and stays independent from runtime.

Provide at least one interactive experience: Gradio YAML, an external experience, or both. Worker and Endpoint addresses are for application calls. The experience URL is a browser-reachable frontend address.

  • Upload an icon and screenshots, choose a category, and optionally add homepage, docs, and support links.
  • Gradio YAML is optional; when it is empty, an external experience URL is required.
  • External experience is optional and can be enabled together with Gradio.
  • Experience URL is the developer frontend address over HTTP/HTTPS. Configure it separately from Runtime Endpoint and Worker addresses.
Example
{
  "version": "1",
  "mode": "platform",
  "renderer": "gradio",
  "yaml": "version: \"1\"\nrenderer: gradio\n...",
  "external": {
    "mode": "embed",
    "url": "https://app.example.com",
    "fallback_url": "https://app.example.com"
  }
}

// Gradio only     -> mode=platform, renderer=gradio, no external
// External only   -> mode=external, external.url required
// Both            -> mode=platform + external (recommended for rich apps)
DetailsAPI-only publishing (Invocation API without an interactive page) is a target design and is not available in the current wizard.
06

Two experience frontends: Gradio and self-hosted

Both frontends target the same application backend. The difference is the user entry and call path, not business ownership.

  • Gradio writes go through application Invocations. The platform routes the current release to Load Balancer or Queue.
  • A self-hosted frontend adapts the application business APIs directly. Full product UX does not need to fit inside declarative YAML.
  • When the app needs chat, image, or video generation, the server uses GRIDNEXA_AI_API_KEY and POST /v1/invoke.
  • One application can expose both frontends: Gradio for in-platform trial, self-hosted UI for the complete product.
TopicGradio templateSelf-hosted frontend
RolePlatform-rendered hosted experience UI from YAMLDeveloper-owned product UI
User entryMarketplace experience pageExternal link or iframe embed
Browser callsPlatform POST /v1/apps/{id}/invocationsApplication /api/* (often via Endpoint proxy)
PollingPlatform Invocation; app-local async tasks use declared GET operationsApplication task-query APIs
When /v1/invoke runsNot from the browser; the app worker calls it when AI is neededSame: app backend calls it only for model work
Best forLightweight Marketplace trials and core-path validationFull workbench, complex UX, branded standalone site
Example
Gradio frontend
  browser -> platform experience page
          -> POST /v1/apps/{applicationId}/invocations
          -> Load Balancer worker OR Queue handler
          -> application business logic
          -> (optional) POST /v1/invoke when AI is needed

Self-hosted frontend
  browser -> application /api/*
          -> application business logic
          -> (optional) POST /v1/invoke when AI is needed
DetailsGradio is another frontend, not a second business backend. YAML only orchestrates existing application operations.
07

Use now priority and open modes

Marketplace and developer detail Use now / Open experience share one priority: a valid external experience URL wins; otherwise fall back to Gradio or a legacy platform template; if neither exists, launch is unavailable.

  • embed embeds inside the platform experience page; link leaves to the developer site.
  • When both are configured, the experience page defaults to the external frontend. Switch with ?view=platform or ?view=external.
  • Before submit, click primary and secondary entries with a real user identity and verify response binding, async states, and downloads.
  • Async flows should cover queued, running, completed, and failed states in addition to the synchronous success path.
ConfigurationUse now behaviorSecondary entry
Gradio onlyOpen the platform experience page with GradioNone
External · link onlyOpen the external URL in a new tabNone
External · embed onlyOpen the experience page and iframe the external siteOptional fallback_url when embed is blocked
Gradio + external · linkOpen the external URL in a new tabExperience or detail pages can still open Gradio
Gradio + external · embedOpen the experience page and default to external embedHeader text link switches to Gradio (?view=platform)
Example
Use now priority

1. external.url present?
   - link  -> open external URL in a new tab
   - embed -> /marketplace/product/{id}/experience
             (default view = external iframe)
2. else Gradio / platform template?
   -> /marketplace/product/{id}/experience (Gradio)
3. else unavailable

When both exist:
  ?view=platform  -> Gradio
  ?view=external  -> external embed
DetailsRuntime external_url, Endpoint URL, and Worker addresses are application call addresses. The experience URL is a browser frontend address.
08

Step 5: Review and submit

Review the listing, runtime, price, and experience. Submission moves the app to pending_review. It appears in the Marketplace after both the app and target market reach published.

  • Complete one Invocation using a user identity.
  • Check error responses and logs for keys, runtime tokens, or internal URLs.
  • Retain requestId, Invocation ID, and worker logs.
  • Address rejection reasons and resubmit the draft.
09

Lifecycle and updates

Each publication creates a separate release. Create and check a new version when changing images, manifests, operations, or experience configuration, then switch the active release. Unpublished applications stop accepting new public invocations.

Example
draft -> pending_review -> published
                    |-> rejected -> edit -> pending_review

published -> unpublished
published / unpublished -> draft (edit and release again)
DetailsDevelopment or preview environments may enable automatic publishing. The status shown by the console reflects the current application state.
Last updated: 2026-09-29
Was this page helpful?
Found a documentation issue?

Choose an issue type, add details, and submit your feedback.