> Source: https://builder.ema.ai/v2/frontier-apps-builder
> Title: App Builder

# App Builder

App Builder is Ema's environment for building custom web apps that sit on top of your AI Employees. You describe the app you want in plain language, an AI agent writes the code in a live sandbox, and you watch the result render in a preview beside the conversation. When it's ready, you publish it to a hosted URL with one click. No local toolchain, no separate repo to clone, no deploy script to maintain.

An app built here is a real full-stack application — a Vite + React front end and a Hono (Node.js) back end with its own MongoDB database — not a configuration form. Because it's code, it can do anything a web app can do: forms, dashboards, multi-step flows, file uploads, custom UI. What sets it apart is that its back end has one sanctioned outbound path: it calls your AI Employees (AIEs) through Ema's gateway, so the heavy lifting — extraction, classification, drafting, conversation — runs on workflows you already built.

> [INFO]
> **Availability.** App Builder is rolling out gradually and is enabled per tenant. If you don't see **App Builder** in the navigation, it isn't turned on for your tenant yet — contact your administrator.

## Why build an app here

AI Employees expose their power through chat, dashboards, and document generation. App Builder is another surface: a purpose-built application with exactly the screens, inputs, and flow your use case needs, wired to one or more AIEs behind the scenes. Reach for it when:

-   The interaction doesn't fit a chat box or a generic dashboard — you need a custom form, a wizard, a review queue, or a branded landing experience.
-   You want to combine several AIEs and your own business logic (validation, persistence, role checks) into a single tool your users open like any other web app.
-   You want users to interact with an AIE without learning the AI Employee builder — they just use the app.

## How it works

You drive the builder through a conversation, the same way you'd brief a developer. The AI agent has tools to read, write, and edit files in a sandboxed workspace, run commands, and check the preview for runtime errors. After each turn it commits its changes to a per-app git history, so every step is reversible.

The lifecycle of an app has four phases:

1.  **Create** — start from a blank template or import an existing GitHub repo. The builder provisions an ephemeral sandbox, copies in the starter app, and boots a live dev server. See [Create an App](/builder/v2/frontier-apps-builder/create-an-app).
2.  **Build** — chat with the AI to add screens and features, edit code directly in the in-browser editor, and watch the preview update live. See [The App Editor](/builder/v2/frontier-apps-builder/the-app-editor).
3.  **Configure** — bind each AI Employee slot the app declares to a real workflow in your tenant, and set any typed configuration values. See [The App Editor](/builder/v2/frontier-apps-builder/the-app-editor#configuration-and-bindings) for the configuration surface and [App Permissions](/builder/v2/frontier-apps-builder/app-permissions) for the related access model.
4.  **Publish** — deploy the app to a hosted URL, then start, stop, or republish it over its lifetime. See [Deploying and Versioning](/builder/v2/frontier-apps-builder/deploying-and-versioning).

## What's in an app

Every app starts from the Ema starter template, a Vite + React 19 + Hono full-stack project. The pieces a builder should know about:

Piece

What it is

**Front end**

Vite + React 19 + React Router + TanStack React Query, styled with Tailwind CSS and shadcn/ui components, using Phosphor icons.

**Back end**

A Hono (Node.js) server with Mongoose models against the app's own MongoDB database.

**AI Employee calls**

The server reaches your AIEs only through a built-in client that proxies to Ema's gateway. Direct calls to outside hosts are blocked at publish time and at the network layer. See [Calling AI Employees from App Code](/builder/v2/frontier-apps-builder/calling-ai-employees-from-app-code).

**`catalog.yaml`**

Declares the app's _slot schema_ — the named AI Employee slots and typed config values the app expects — plus the in-app roles. It carries no values or workflow IDs; those are bound per tenant in the builder.

**Auth**

Sign-in is handled by Ema's single sign-on. The app never builds a login page; every request arrives with the real user's identity.

## A note on AI Employee slots

An app doesn't hardcode which AI Employee it calls. Instead it declares named **slots** in its `catalog.yaml` (for example, `AIE_RESUME_PARSER`), and the app code reads them as environment variables at runtime. In the builder, you bind each slot to a concrete workflow in your tenant. This is what lets the same app deploy unchanged across tenants and environments — each one binds its own AI Employees. See [Configuration and bindings](/builder/v2/frontier-apps-builder/the-app-editor#configuration-and-bindings) for how to bind slots.

## Editor sessions are ephemeral

The sandbox behind the editor is a live, ephemeral session — not permanent infrastructure. To keep idle compute from piling up, the platform reaps sessions on two timers. By default a session is terminated after **30 minutes** of inactivity (idle timeout) and after **8 hours** total regardless of activity (maximum lifetime); both are configurable per environment. Before terminating, the platform auto-commits any uncommitted work and pushes it, so nothing is lost. Reopening an app restarts the session automatically from its saved snapshot. None of this touches a published app — a deployment runs independently of the editor session that produced it.

## What's next

-   [Create an App](/builder/v2/frontier-apps-builder/create-an-app) — start a new app or import an existing repo.
-   [The App Editor](/builder/v2/frontier-apps-builder/the-app-editor) — the chat, code editor, file tree, and live preview.
-   [Deploying and Versioning](/builder/v2/frontier-apps-builder/deploying-and-versioning) — publish, the deployment lifecycle, and version history.
-   [App Permissions](/builder/v2/frontier-apps-builder/app-permissions) — App Managers, in-app roles, and who can open an app.
-   [Calling AI Employees from App Code](/builder/v2/frontier-apps-builder/calling-ai-employees-from-app-code) — the developer surface: the gateway client, the path allowlist, human-in-the-loop, the app database SDK, and the publish-time URL guard.
