interface block in charm.yaml defines the JSON Schema for user inputs. The optional interface.ui block maps fields to Store form widgets.
For all manifest fields, see the Manifest Reference.
Text inputs
Validation rules
Built-in UI widgets
Map fields to Store components withinterface.ui:
Legacy templates may use
x-ui-widget on individual properties; the Store still resolves those for backward compatibility.
Unknown widget names fall back to text.
Access inputs in code
Adding custom UI Widgets (Community Plugins)
If you need a specialized input widget (like a code editor, color picker, or map selector), you can build and share it dynamically using the Charm Community Plugin registry.- Build a React Component: Your component must implement the
FieldPropsinterface and be exported as the default export. - Publish: Publish your component as an ESM-compatible NPM package.
- Register: Submit a Pull Request to the charm-community-plugin repository. Add your widget to
widgets/registry.json.
id in their ui:widget config. The Charm Store will dynamically download and render your NPM package on the fly—no platform redeploys required!
