What are Apps?

Runtype Apps let you take a static web app (HTML, CSS, and JavaScript) and deploy it to a real URL in seconds. Each app gets its own hostname on runtype.run, and everything dynamic (AI chat, flows, agents) comes from Runtype APIs through a client token that Runtype provisions and manages for you. There is no backend to run, no API keys in the browser, and no separate hosting setup.

Runtype Apps is in early access and rolling out in stages. Four surfaces are available now: the REST API, the Runtype CLI (runtype apps), the MCP tools, and the dashboard Apps page. The serving edge ships separately, so a deployed app may not serve traffic yet in every environment.

How apps work

An app is a versioned bundle of static files plus a small manifest. Deploying is a three-step cycle:

  1. Create the app. You choose a slug, and Runtype assigns the hostname {slug}-{shortId}.runtype.run. The short id is a random suffix that keeps hostnames unique.
  2. Upload a version. You upload a zip of your built app. The bundle must contain index.html and a runtype.app.json manifest at the root. Uploading does not change what is served.
  3. Activate the version. Activation flips the app’s active-version pointer. Rolling back is the same operation: activate an older version.

Because activation is a pointer flip, deploys and rollbacks are instant. Every version you upload stays in the version history until you delete the app.

Your app’s URL

Apps serve from https://{slug}-{shortId}.runtype.run. Slug rules:

  • Lowercase letters, digits, and hyphens only
  • Must start with a letter (digit-prefixed hostnames are reserved for sandbox previews)
  • No leading or trailing hyphen
  • Up to 40 characters

Custom domains are not available in early access.

The manifest

Every bundle includes a runtype.app.json file that declares what the app is and which Runtype capabilities it uses:

1{
2 "name": "Retro Board",
3 "description": "A team retro board with an AI summarizer",
4 "capabilities": {
5 "flows": ["flow_01h2x..."],
6 "agents": []
7 },
8 "data": [{ "namespace": "retro_card", "access": "read-write" }],
9 "auth": "none"
10}
  • capabilities lists the flows and agents your app’s frontend can call. Runtype validates at upload that every id exists and belongs to you.
  • data declares record namespaces the app intends to read or write. The app data API that uses these grants is coming in a follow-up.
  • auth must be "none" in early access. The values "optional" and "required" are reserved for Log in with Runtype and are rejected at upload.

For the full field reference, see Deploying Runtype Apps.

The app client token

When you create an app, Runtype auto-provisions a client token locked to the app’s own origin. On every activation, the token’s scope is synced to the active manifest’s flows and agents. Your bundle never hard-codes credentials: at serve time, the edge injects a public boot config (window.__RUNTYPE_APP__) containing the client token, the API base URL, and the app and version ids. Rotating the token never requires a redeploy.

To learn how client tokens work in general, see Client tokens and domain restrictions.

Visibility and status

SettingValuesWhat it controls
visibilitypublic, unlistedUnlisted apps are reachable only by URL and served with X-Robots-Tag: noindex
statusactive, suspendedSuspending an app is a kill switch: the app’s URL returns 410 Gone until you set it back to active

New apps default to unlisted. Public visibility requires a paid plan.

Plan limits

PlanAppsBundle size limitPublic visibility
Build110 MBNo (unlisted only)
Startup525 MBYes
Growth2050 MBYes
Team5050 MBYes
EnterpriseUnlimited50 MBYes

Requests that exceed a plan limit return 402 with an actionable error message. Every bundle is also capped at 500 files, and 50 MB is a hard ceiling on every plan.

Next steps