Building and configuring a custom app requires the Builder or Admin
role in the workspace. Any member can create a notebook.
Create a notebook
1
Open the Notebooks page
Go to Apps and choose Notebooks.
2
Click New notebook
Fill in the dialog:
- Title: the display name, for example
Sales analysis. - Name: the notebook’s file name in the shared folder and the reference
agents use (
app:<name>). Lowercase letters, digits, dash and underscore, up to 64 characters. It cannot be changed later. - Description (optional): what the notebook is for.
- Sandbox environment: the image the notebook’s kernel boots in. Only environments with a built notebook image can be picked; Workspace default uses the workspace’s standard image.
3
Click Create
The notebook starts as soon as it is created and opens in the marimo editor.
Add cells, run them, and the file is saved in the workspace’s shared
notebooks folder.
create_notebook tool and opens the
result beside the chat.
Create a custom app
1
Open the Custom apps page
Go to Apps and choose Custom apps, then click New app.
2
Pick an app type
- Regular app: a UI for people, with APIs as needed.
- MCP app: a UI for people and tools for agents.
3
Describe the app
Write who it is for and what it should do, or start from one of the ideas
under A few places to start (A dashboard, An internal tool,
A customer portal). Open App name (optional) to set the title and
name yourself; otherwise a name is generated from the title.
4
Start building
Start building opens the App Builder and sends your description as the
first message. Skip to settings opens the builder on its Settings
tab without starting a chat.
Import an existing folder
Already have the code? On the Custom apps page click Import folder, pick a folder from your computer, and set a Title and Name. The files land in the builder as a draft; nothing is published until you save a version and publish it. Include adatagen.app.json at the top of the folder to state how the app
starts (see How the app starts). A folder without one
still imports, but cannot be saved or published until the manifest exists. The
builder agent can read the code and write it for you.
The App Builder
The App Builder lives at/signalgen/apps/<appId>/build. Open it with Open
builder on an app’s detail page or Edit while viewing the app.
Build with the chat
Describe a change, or ask about the app’s files: “Add a page that lists open requests”, “Why does the chart show no data?”. The builder edits a draft copy of the app in its own builder sandbox. Nothing you do here reaches the running app until you publish.- New chat starts a fresh conversation about the same app.
- Reload refreshes the preview page; Restart stops and restarts the app process, which is needed after a command, port or dependency change.
- Restart sandbox recreates the builder sandbox and keeps your draft.
- Discard restores every pending file to the newest saved version. Revert does the same for one file.
- On the API and Tools tabs, Add and Update prepare a prompt in the chat describing the interface change; review it and send it when ready.
How the app starts
A custom app’s start settings live in adatagen.app.json file at the root of
the app’s files. The How it starts section in Settings shows the
current values read-only; edit the file (or ask the builder chat to) and the
settings follow.
datagen.app.json
When the file is missing, the builder detects a likely start command from the
files (a
start or dev script in package.json, an entry file at the root,
or a static index.html) and Create datagen.app.json or Set up with
agent writes the manifest.
Dependencies
Dependencies declared inpackage.json, package-lock.json,
requirements.txt, pyproject.toml or uv.lock are installed into an image
for each saved version. Opening an app whose image is still building shows
Installing dependencies until it is ready.
Settings
The Settings tab in the builder (and the Settings tab on the app’s detail page) holds everything the manifest does not. Anything left unset uses the workspace default.The port and sandbox environment are fixed when an app’s sandbox starts.
After changing them on the detail page, stop the app and open it again.
Give the builder knowledge and skills
Attach knowledge bases
In Settings > Knowledge bases (or the detail page’s Tools & knowledge tab), click Connect context and pick a published knowledge base. Connected knowledge bases are mounted read-only in the builder’s sandbox as background for writing the app. The published app does not read them. See Use Context for how knowledge bases are built and attached.Install skills
On the detail page’s Tools & knowledge tab, the Skills section lists skills approved in the workspace. Click Install to make one available to the builder. Installed skills live only in the builder’s sandbox; they are tools for building the app, never part of a published version. When the registry has a newer approved version, the row shows Update available. See Skills for uploading and approving skills.On deployments with the assets layer enabled, Tools & knowledge also lists
the knowledge bases and analytic models the running app may read, as the
person who opened it. Pick one and click Connect.
Give the running app data
Sources: workspace files
The detail page’s Sources tab selects workspace files the app can read. Selected files are copied into the app’s.sources/ folder when its sandbox
starts, and the app can also read them through the Files API. Sources are not
part of a published version, so a running app always sees the current files.
After changing files, Rebuild sources re-copies them into the running app
without restarting it. A process that loads its data only at startup keeps the
old copy until you stop and reopen the app.
See Files for uploading files to the workspace.
Databases
To query a database from the app’s code, store a read-only credential in a Connection Vault, select that vault in Settings, and read the connection values from environment variables. The pattern is the same as for agents; see Query from code.Next
Publish and share
Save a version, publish it, and control who can open the app.
Ship an app tutorial
Build a marimo dashboard from the demo data end to end.