openapi-ui

April 6, 2026 · View on GitHub

React + TypeScript UI for Kubernetes

A React + TypeScript app that provides tables, forms and factories that renders UI and data directly from Kubernetes Custom Resources (CRDs). Define interfaces in YAML; the app discovers CRDs, watches their objects, and builds a live UI.

⚙️ Configuration

This app can be configured through environment variables.

VariableTypeRequiredDescription
BASEPREFIXstringNo (better)Base URL for the app. /openapi-ui
KUBE_API_URLstringYesURL for the Kubernetes API. http://api.incloud-web.svc.default.in-cloud.internal:8081
BFF_URLstringYesURL for the BFF.
TITLE_TEXTstringYes if no pluginPage title.
LOGO_TEXTstringYes if no pluginLogo text near icon.
FOOTER_TEXTstringYes if no pluginFooter text.
ICON_SVGstringYesFavicon base64 encoded.
CUSTOM_LOGO_SVGstringNoBase64 encoded svg
CUSTOM_TENANT_TEXTstringNoCustom tenant text override
LOGIN_URLstringYes if no pluginLogin endpoint. /oauth/token
LOGOUT_URLstringYes if no pluginLogout endpoint. /oauth/logout
LOGIN_USERNAME_FIELDstringYes if no pluginField from login endpoint response. name
CUSTOMIZATION_API_GROUPstringYesAPI group for customization resources. front.in-cloud.io
CUSTOMIZATION_API_VERSIONstringYesAPI version for customization resources. v1alpha1
CUSTOMIZATION_NAVIGATION_RESOURCE_PLURALstringNoResource plural name for navigation settings. navigations
CUSTOMIZATION_NAVIGATION_RESOURCE_NAMEstringNoResource name for navigation settings. navigation
CUSTOMIZATION_CFOMAPPING_RESOURCE_PLURALstringNoResource plural name for CFO settings. cfomappings
CUSTOMIZATION_CFOMAPPING_RESOURCE_NAMEstringNoResource name for navigation settings. default
CUSTOM_NAMESPACE_API_RESOURCE_API_GROUPstringNoCustom namespace resource: api group.
CUSTOM_NAMESPACE_API_RESOURCE_API_VERSIONstringNoCustom namespace resource: api version.
CUSTOM_NAMESPACE_API_RESOURCE_PLURALstringNoCustom namespace resource: plural name.
SELECTOR_WIDTH_CLUSTERstringNoSelector width for cluster: 200px
SELECTOR_WIDTH_NAMESPACEstringNoSelector width for namespace: 200px
SELECTOR_WIDTH_PROJECTstringNoSelector width for project: 200px
SELECTOR_WIDTH_INSTANCEstringNoSelector width for instance: 200px
CUSTOMIZATION_SIDEBAR_FALLBACK_IDstringYes if no pluginspec.id to find in sidebars to fallback. Use -namespaced for NS-pages
CUSTOMIZATION_BREADCRUMBS_FALLBACK_IDstringYes if no pluginspec.id prefix to find in breadcrumbs to fallback
CUSTOMIZATION_CFO_FALLBACK_IDstringNospec.id prefix to find in CFO to fallback
USE_NAMESPACE_NAVbooleanNoUse namespaces instead of project/instances. true
HIDE_NAVIGATIONbooleanNoHide navigation container (also navigation plugin).
HIDE_BREADCRUMBSbooleanNoHide breadcrumbs container.
BREADCRUMBS_NO_MARGIN_TOPbooleanNoBreadcrumbs with no margin-top.
USE_NEW_NAVIGATIONbooleanNoCluster selector in sidebar. NS selector where it needs to be.
HIDE_INSIDEbooleanNoUse namespaces instead of project/instances. true
HIDE_FOOTERbooleanNoHide footer container.
NAVIGATE_FROM_CLUSTERLISTstringYesLocation to be navigated after selecting cluster. /openapi-ui/clusters/~recordValue~
PROJECTS_API_GROUPstringNoAPI group for projects resources. If not using namespace nav.
PROJECTS_API_VERSIONstringNoAPI version for projects resources. If not using namespace nav.
PROJECTS_PLURALstringNoPlural name for projects resources. If not using namespace nav.
MARKETPLACE_PLURALstringNoPlural name for marketplace resources for related factory component.
MARKETPLACE_KINDstringNoKind name for marketplace resources for related factory component.
INSTANCES_API_GROUPstringNoAPI group for instances resources. If not using namespace nav.
INSTANCES_API_VERSIONstringNoAPI version for instances resources. If not using namespace nav.
INSTANCES_PLURALstringNoPlural name for instances resources. If not using namespace nav.
CURRENT_CLUSTERstringNoCurrent cluster name
CLUSTERLIST_API_RESOURCE_API_GROUPstringNoAPI group for clusterlist resources. If not fallback to endpoint.
CLUSTERLIST_API_RESOURCE_API_VERSIONstringNoAPI version for clusterlist resources. If not fallback to endpoint.
CLUSTERLIST_API_RESOURCE_PLURALstringNoPlural name for clusterlist resources. If not fallback to endpoint.
NODE_TERMINAL_DEFAULT_PROFILEstringNoDefault profile for node terminal component. baseline. Deprecated.
DOCS_URLstringYesURL to navigate from question mark.
SEARCH_TABLE_CUSTOMIZATION_PREFIXstringYesSearch tables Customization id prefix.
REMOVE_BACKLINKbooleanNoRemove backlink arrow from right-side navigation.
REMOVE_BACKLINK_TEXTbooleanNoRemove backlink text from right-side navigation.
BASE_FACTORY_NAMESPACED_API_KEYstringYesBase factory key for namespaced API resources.
BASE_FACTORY_CLUSTERSCOPED_API_KEYstringYesBase factory key for clusterscoped API resources.
BASE_FACTORY_NAMESPACED_BUILTIN_KEYstringYesBase factory key for namespaced builtin (v1) resources.
BASE_FACTORY_CLUSTERSCOPED_BUILTIN_KEYstringYesBase factory key for clusterscoped builtin (v1) resources.
BASE_NAMESPACE_FACTORY_KEYstringYesBase factory key for namespaces.
MF_PLUGINS_NO_CLUSTERstringNoJSON for Plugins Manifest.
THEME_TOKENS_COLORS_LIGHTstringNoJSON for AntD Tokens: check this out.
THEME_TOKENS_COLORS_DARKstringNoJSON for AntD Tokens: check this out.
THEME_TOKENS_SIZESstringNoJSON for AntD Tokens: check this out.
THEME_TOKENS_COMPONENTS_LIGHTstringNoJSON for AntD Tokens: check this out.
THEME_TOKENS_COMPONENTS_DARKstringNoJSON for AntD Tokens: check this out.
THEME_TOKENS_USE_MERGE_STRATEGYbooleanNoUse merge instead of replace for theme tokens. Doesn't work for components.
PLUGIN_LOADING_INDICATOR_HEADERstringNoHeader plugin loading indicator: spinner, text, or none. Defaults to text.
PLUGIN_LOADING_INDICATOR_SIDEBARstringNoSidebar plugin loading indicator: spinner, text, or none. Defaults to text.
PLUGIN_LOADING_INDICATOR_NAVIGATIONstringNoNavigation plugin loading indicator: spinner, text, or none. Defaults to text.
PLUGIN_LOADING_INDICATOR_ROUTEstringNoRoute plugin loading indicator: spinner, text, or none. Defaults to text.
PLUGIN_LOADING_SPINNER_MODEstringNoSpinner mode: inline (in container) or global (center of viewport). Defaults to inline.
PLUGIN_LOADING_SPINNER_SIZEstringNoInline plugin spinner size: small, default, or large. Unset uses AntD default.
PLUGIN_GLOBAL_SPINNER_SIZEstringNoGlobal plugin spinner size: small, default, or large. Unset uses AntD default.

🤝 Contributing

Check this out