diff --git a/backend/app_controller.py b/backend/app_controller.py
index d5265b1..77b637d 100644
--- a/backend/app_controller.py
+++ b/backend/app_controller.py
@@ -682,6 +682,7 @@ class AppController:
"transcription_count": len(self.transcriptions),
"remote_mode": remote_mode,
"server_sync_enabled": self.config.get('server_sync.enabled', False),
+ "is_cloud_only": self.is_cloud_only,
}
def get_audio_devices(self) -> list[dict]:
diff --git a/src/lib/components/Settings.svelte b/src/lib/components/Settings.svelte
index be8c103..b7e47f3 100644
--- a/src/lib/components/Settings.svelte
+++ b/src/lib/components/Settings.svelte
@@ -453,6 +453,7 @@
/>
Managed Service
+ {#if !backendStore.isCloudOnly}
+ {/if}
{#if remoteMode === "byok"}
diff --git a/src/lib/stores/backend.svelte.ts b/src/lib/stores/backend.svelte.ts
index 12adf57..f196227 100644
--- a/src/lib/stores/backend.svelte.ts
+++ b/src/lib/stores/backend.svelte.ts
@@ -19,6 +19,7 @@ interface BackendState {
wsConnection: WebSocket | null;
version: string;
lastError: string;
+ isCloudOnly: boolean;
}
let state = $state({
@@ -30,6 +31,7 @@ let state = $state({
wsConnection: null,
version: "1.4.0",
lastError: "",
+ isCloudOnly: false,
});
let reconnectTimer: ReturnType | null = null;
@@ -72,6 +74,9 @@ async function pollStatus() {
if (data.version) {
state.version = data.version;
}
+ if (data.is_cloud_only !== undefined) {
+ state.isCloudOnly = data.is_cloud_only;
+ }
}
} catch {
// API not ready yet, will retry
@@ -285,6 +290,9 @@ export const backendStore = {
get lastError() {
return state.lastError;
},
+ get isCloudOnly() {
+ return state.isCloudOnly;
+ },
get apiBaseUrl() {
return `http://localhost:${state.port}`;
},