diff --git a/packages/@n8n/api-types/src/frontend-settings.ts b/packages/@n8n/api-types/src/frontend-settings.ts index 3dd95531a1..09e662a8c7 100644 --- a/packages/@n8n/api-types/src/frontend-settings.ts +++ b/packages/@n8n/api-types/src/frontend-settings.ts @@ -105,6 +105,8 @@ export interface FrontendSettings { }; missingPackages?: boolean; executionMode: 'regular' | 'queue'; + /** Whether multi-main mode is enabled and licensed for this main instance. */ + isMultiMain: boolean; pushBackend: 'sse' | 'websocket'; communityNodesEnabled: boolean; aiAssistant: { diff --git a/packages/cli/src/services/frontend.service.ts b/packages/cli/src/services/frontend.service.ts index 4d26353fcc..1988e2343c 100644 --- a/packages/cli/src/services/frontend.service.ts +++ b/packages/cli/src/services/frontend.service.ts @@ -173,6 +173,7 @@ export class FrontendService { host: this.globalConfig.templates.host, }, executionMode: config.getEnv('executions.mode'), + isMultiMain: this.instanceSettings.isMultiMain, pushBackend: this.pushConfig.backend, communityNodesEnabled: this.globalConfig.nodes.communityPackages.enabled, deployment: { diff --git a/packages/frontend/editor-ui/src/__tests__/defaults.ts b/packages/frontend/editor-ui/src/__tests__/defaults.ts index a71d14a9c4..fe4ac34bdd 100644 --- a/packages/frontend/editor-ui/src/__tests__/defaults.ts +++ b/packages/frontend/editor-ui/src/__tests__/defaults.ts @@ -47,6 +47,7 @@ export const defaultSettings: FrontendSettings = { evaluator: 'tournament', }, executionMode: 'regular', + isMultiMain: false, executionTimeout: 0, hideUsagePage: false, hiringBannerEnabled: false, diff --git a/packages/frontend/editor-ui/src/composables/useDebugInfo.ts b/packages/frontend/editor-ui/src/composables/useDebugInfo.ts index ebe48ec828..98770ba008 100644 --- a/packages/frontend/editor-ui/src/composables/useDebugInfo.ts +++ b/packages/frontend/editor-ui/src/composables/useDebugInfo.ts @@ -9,7 +9,7 @@ type DebugInfo = { platform: 'docker (cloud)' | 'docker (self-hosted)' | 'npm'; nodeJsVersion: string; database: 'sqlite' | 'mysql' | 'mariadb' | 'postgres'; - executionMode: 'regular' | 'scaling'; + executionMode: 'regular' | 'scaling (single-main)' | 'scaling (multi-main)'; license: 'community' | 'enterprise (production)' | 'enterprise (sandbox)'; consumerId?: string; concurrency: number; @@ -64,7 +64,11 @@ export function useDebugInfo() { : settingsStore.databaseType === 'mysqldb' ? 'mysql' : settingsStore.databaseType, - executionMode: settingsStore.isQueueModeEnabled ? 'scaling' : 'regular', + executionMode: settingsStore.isQueueModeEnabled + ? settingsStore.isMultiMain + ? 'scaling (multi-main)' + : 'scaling (single-main)' + : 'regular', concurrency: settingsStore.settings.concurrency, license: settingsStore.isCommunityPlan || !settingsStore.settings.license diff --git a/packages/frontend/editor-ui/src/stores/settings.store.ts b/packages/frontend/editor-ui/src/stores/settings.store.ts index 6cf812d51e..3f2e9eeb12 100644 --- a/packages/frontend/editor-ui/src/stores/settings.store.ts +++ b/packages/frontend/editor-ui/src/stores/settings.store.ts @@ -160,6 +160,7 @@ export const useSettingsStore = defineStore(STORES.SETTINGS, () => { const allowedModules = computed(() => settings.value.allowedModules); const isQueueModeEnabled = computed(() => settings.value.executionMode === 'queue'); + const isMultiMain = computed(() => settings.value.isMultiMain); const isWorkerViewAvailable = computed(() => !!settings.value.enterprise?.workerView); @@ -425,6 +426,7 @@ export const useSettingsStore = defineStore(STORES.SETTINGS, () => { isCommunityNodesFeatureEnabled, allowedModules, isQueueModeEnabled, + isMultiMain, isWorkerViewAvailable, isDefaultAuthenticationSaml, workflowCallerPolicyDefaultOption,