skip to content

// Plugin development

config schema

dynamic config forms the host renders for each instance.

config schema

configSchema is an array of fields. the host renders this as a dynamic form when creating or editing a server instance — plugins never build their own config ui for the basics. the resolved values become userOverrides, available to lifecycle and scaffold via {{userOverrides.*}}.

field types

jsonc
"configSchema": [ { "key": "port", "label": "Port", "type": "text", "default": "3000" }, { "key": "log_level", "label": "Log Level", "type": "select", "options": ["debug","info","warn","error"], "default": "info" }, { "key": "max_connections", "label": "Max Connections", "type": "text", "default": "100" } ]

| field | type | notes | |---|---|---| | key | string | the userOverrides key. | | label | string | shown in the form. | | type | "text" \| "select" | the two supported types today. | | default | string | used on fresh instances. | | options | string[] | only for select. |

dependsOn — cascading defaults

fields may declare dependsOn to cascade defaults when another field changes. for example, a plugin can use this so that picking a runtime adjusts the suggested entry file and build command.

// note

keep config fields minimal. every field is one more decision a user has to make to get a server running. ship sensible defaults.