Pilot can build custom widgets as well as full applications. A custom widget is a sandboxed frontend component that embeds inside a Workshop application, rather than a standalone hosted application. Building a widget uses the same conversational workflow as building an application, with the differences described on this page. To create a new project, see Getting started.
On the Pilot welcome screen, choose Custom widget set instead of OSDK application, then describe the widget you want to build and select Create widget set. Pilot provisions an isolated container and generates the widget from your prompt.
As when building an application, you chat with Pilot in the chat panel. You can switch between act and plan modes, attach context, and choose a model.
Pilot generates a widget that renders inside a Workshop application. A single project can include multiple widgets, which Pilot publishes together as one widget set. Pilot connects each widget to its host application through two mechanisms:
Pilot defines these parameters and events as it builds. For background on how widgets communicate with their host application, see Parameters and events.
Widgets run in a restricted sandbox. Keep the following in mind when prompting Pilot:
The Preview tab renders your widget in the Workshop widget sandbox, letting you view it exactly as it will appear once embedded. In editor view, the preview uses locally generated seed data by default. To preview against real ontology data, switch to production data using the Seed data / Production data toggle.
If you change a widget's parameters or events, select Reload widget dev mode in the widget preview to apply the change to the running preview.

A widget reads from and writes to your ontology through the OSDK, using the permissions of the person viewing it in Workshop. In the Ontology tab, you can reference existing entities or, when modifications are allowed, have Pilot propose new ones. You control what Pilot is allowed to change from the Ontology tab.
While you build, the model never accesses your real data. Even when you preview against production data, your data stays hidden from the model. For details, see Seed data and live data.