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:
- Open the app in the App Builder.
- Switch to the Properties tab.
- 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
- Up to 50 files per app.
- Up to 5 MB per file.
- Up to 50 MB total storage per app.
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:
- Secrets — store API keys and credentials that apps can read but never expose to end users.
- Server Procedures — run server-side logic without leaving Operator.
- HTTP Proxy — make outbound HTTPS calls from the backend.
- Logging — persistent, queryable app logs with retention and quotas.
- Public Access — expose selected backend endpoints publicly.
- Custom Domains — serve apps and backend APIs from your own domain.