Apps with Managed Backend

Pro apps include a managed backend that is hosted by Operator. Over time this backend will provide persistent storage, secrets, server procedures, an HTTP proxy, structured logging, public access, and custom domains.

What makes an app Pro

A Pro app is an app whose owner has upgraded it from the Free tier. Pro apps consume AI credits — starting at 1 credit per day and increasing with usage.

To upgrade an app:

  1. Open the app in the App Builder.
  2. Switch to the Properties tab.
  3. In the Pro App card, click Upgrade to Pro.

Downgrading returns the app to the Free tier. Managed backend features stop being available, and the app stops consuming backend credits.

Backend tab

Once an app is Pro, a Backend tab appears in the App Builder (between Code and Sharing). The tab contains sub-sections for the different backend services. Today only Files is active; the other sections are released progressively.

Files

The Files section lets the App Builder store files that the app can read and write at runtime.

Limits

Read-only files

The App Builder can mark any file as read-only. Read-only files can still be read by the app at runtime, but the app cannot overwrite or delete them. This is useful for configuration files, templates, or reference data that should not change at runtime.

Runtime creation

By default, apps can only read and overwrite files that already exist. The App Builder can enable Allow app to create files at runtime. When enabled, the app can create new files through the SDK.

SDK

Apps access stored files through operator.files:

// List files — a plain array of { path, size, mimeType, readOnly, createdAt, updatedAt }
var files = await operator.files.list();

// Read a file — returns the content as a string
var data = await operator.files.read('config/settings.json');

// Write a file (only if runtime creation is enabled or the file already exists)
// Returns the stored size in bytes
await operator.files.write('reports/daily.json', JSON.stringify(report));

// Delete a file (read-only files cannot be deleted)
await operator.files.delete('temp/draft.json');

Files are private to the app. Each file is stored under the app's own namespace in Operator's managed storage.

Coming soon

The managed backend will expand to include: