BotSpot Β· developer docs Β· app builder
The App Builder is where you build an App's frontend inside Workbench: describe a change in chat and watch it land in a live preview, then configure assets, SEO, and the agent that powers it before you deploy. This page covers every screen in the builder β what it does, where it is, and what it costs.
For the frontend code itself β the botspot.run contract, inputs, and errors β see Building Apps. This page is about the builder tool you use to write and manage that code.
Before you start
Open Workbench β Apps and create or open an app to land in the builder: a chat panel on one side, a live preview on the other. Everything you build lives in a file tree (HTML/CSS/JS, or a small framework project) that the chat agent edits on your behalf, and that you can also edit by hand.
Three chat modes change what a message does:
| Mode | What it does |
|---|---|
| Agent | Makes the change β edits files directly. |
| Plan | Discusses the change first. No files are touched. |
| Visual | Click an element in the preview, then describe the change β the agent knows exactly what you clicked. |
The core loop
Type what you want and send. The builder streams the agent's reasoning and the tool calls it makes (editing a file, reading another) live into the chat, then applies the resulting file edits to your project β a toast confirms how many files changed. The preview updates without a full reload.
Who pays
Every builder chat turn that touches files is billed in BICS, same as any agent run. While you are building (the app is unpublished), this is charged to your organisation's BICS pool β not a visitor's wallet, which only applies after you publish (see Billing and the wallet).
Seeing it work
The builder shows one of two previews:
| Engine | When | Fidelity |
|---|---|---|
| Sandbox | Default, while you edit | Instant, in-browser β accurate for a standard single-page project, but not a guarantee of exactly what a real deploy produces. |
| Deployed | After at least one successful deploy | The real build at your app's address, embedded live β what a visitor actually gets. |
A development app's preview runs on its own address, open only to your workspace β it mints a short-lived preview session automatically rather than exposing your login.
Who builds it
The model picker lists active models capable of reasoning β not one fixed provider. Pick a stronger model for a hard refactor, or a cheaper one for a small tweak; only models tagged for vision let you attach images to a chat message.
Look and feel
The Themes panel edits your project's CSS color variables (the :root block in your stylesheet) as swatches β a fast way to retheme without asking the chat agent to rewrite CSS by hand. It does not touch layout, spacing, or fonts; those are still a chat edit.
Media
Bring images, fonts, video, audio, and PDFs into your project four ways: drag-and-drop upload, an AI-generated image, importing from a URL, or attaching a file in chat. Binary files are stored separately from your code (your file tree stays text-only) and referenced by a manifest the builder maintains for you.
Per-file limit: 25MB.
Settings
App config (botspot.app.json) is the one part of your project the chat agent does not own β it's declared by you, and the builder reads it directly. It holds your app's display name, the agent roles your pages can call (see Backend, below), what data collections it may read, and your build settings. This must be filled in before you can deploy.
Discoverability
The SEO pane writes real tags and files into your project β nothing here is a preview-only mock:
It reads back its own previous output, so re-opening the pane never clobbers tags the chat agent or you wrote by hand elsewhere in the page head.
Logic
An App's backend is one of your own agents. In App config, declare a role (a name your page calls, like "assistant"); in the builder's Backend screen, bind that role to a real agent. Your page then calls it with botspot.run(role, input) β this binding is live, not a mock wiring diagram.
Storage
Attach one of your organisation's existing connected data sources to the app. This only records a pointer β no data is copied or moved, and no credential ever reaches the browser. Detaching just removes the pointer; nothing is deleted.
Identity
In App config's auth settings, choose how the app treats sign-in: no auth at all, sign-in through your MyCrew account (BotSpot holds the users), or your own user table. This is a real decision written into your app's config β pick it based on who you expect to use the app, since changing it later can mean existing users have to sign in again.
Starting from existing code
Three ways to bring code in, from the β― menu's Import code option:
| Source | Lands as |
|---|---|
| A .zip | Loaded into the editable builder tree β the chat agent and you can both edit it. |
| A single .html file | Wrapped as a static, no-build project. |
| A public GitHub or Bitbucket repo | Deployed directly and shown read-only. The chat agent and the builder tree do not edit a git-connected app β push changes to the repo instead. |
Anything imported is scanned for server-only code and secrets (API routes, server framework hooks, .env values) before it lands β you'll be asked to convert it to a botspot.run call or point it at your own backend. Secrets are always stripped.
Going live
Deploy builds your current files and puts them on your app's address. It's blocked until App config is filled in, and warns (without blocking) if an asset reference would 404. Publish only becomes available after a build has deployed successfully, and is what actually makes the app reachable by visitors β see who pays once it's published.
A .botspot.app address carries a small "Request something similar" prompt by default. Remove it as a one-time purchase from the deploy flow (priced live, charged once to your organisation) β connecting a custom domain removes it for free.
Undo
Every save of your project β a chat edit or a manual save β keeps a snapshot. Open the β― menu above the preview and choose Version history to see every save, newest first, and roll back to any of them.
Restoring is never a dead end: a restore takes its own snapshot too, so picking the wrong version is always undoable from the same list. It restores your files β it does not change your agent binding, database attachment, or auth setting, since those live outside the file tree.
Troubleshooting
The chat agent made a change I didn't want.
Ask it to undo in chat, or open Version history and restore the save from before the change.
It works in Test Run but not in my app.
Test Run always uses your agent's newest draft; the live app calls its pinned release. Re-pin the release β see Bind a backend agent.
I connected a git repo and now I can't edit anything.
That's expected β a git-connected app is deployed straight from the repo and shown read-only in the builder. Push your change to the repo and redeploy.
Deploy is greyed out.
App config isn't filled in yet. Open it from the β― menu and complete the required fields.
Where does my building cost show up?
Each chat turn shows its own BICS cost. The running total draws from your organisation's BICS pool until the app is published β see What building costs.