sipeed/picoclaw · warning
Launch at login is not supported on this platform.
Error message
Launch at login is not supported on this platform.
What it means
Thrown in handleSave (web/frontend/src/components/config/config-page.tsx:700, message from i18n key pages.config.autostart_unsupported) when the 'launch at login' toggle is dirty and the backend reports the platform cannot do autostart. autoStartSupported is derived from the autostart status query (autoStartStatus?.supported !== false), which reflects the launcher backend's OS integration capabilities.
Source
Thrown at web/frontend/src/components/config/config-page.tsx:700
const result = await postLauncherDashboardSetup(password, confirm)
if (!result.ok) {
throw new Error(result.error)
}
const clearedLauncherForm = savedLauncherForm ?? {
...launcherForm,
dashboardPassword: "",
dashboardPasswordConfirm: "",
}
setLauncherForm(clearedLauncherForm)
if (savedLauncherForm) {
setLauncherBaseline(savedLauncherForm)
}
}
if (autoStartDirty) {
if (!autoStartSupported) {
throw new Error(t("pages.config.autostart_unsupported"))
}
const status = await updateAutoStartEnabled(autoStartEnabled)
setAutoStartEnabled(status.enabled)
setAutoStartBaseline(status.enabled)
queryClient.setQueryData(["system", "autostart"], status)
}
const gateway = await refreshGatewayState({ force: true })
showSaveSuccessOrRestartToast(
t,
t("pages.config.save_success"),
t("navigation.config"),
gateway?.restartRequired === true,
)
} catch (err) {
toast.error(
err instanceof Error ? err.message : t("pages.config.save_error"),
)View on GitHub (pinned to 49183d7e8d)
Solutions
- Turn the 'launch at login' toggle back off and save — the toggle state is only persisted when supported
- If you need autostart anyway, use the OS's own mechanism (systemd user unit, cron @reboot, Task Scheduler) to start the launcher
- On desktop installs, update the launcher backend so its platform autostart integration reports supported:true
Defensive patterns
Strategy: validation
Validate before calling
// before enabling/saving the toggle
const { data: autoStartStatus } = useQuery({ queryKey: ["system", "autostart"], queryFn: getAutoStartStatus })
if (autoStartDirty && autoStartStatus?.supported === false) {
setFieldError(t("pages.config.autostart_unsupported"))
return
} Type guard
function isAutoStartSupported(status: unknown): boolean {
return !!status && (status as { supported?: boolean }).supported !== false
} Try / catch
try {
await handleSave()
} catch (err) {
if (err instanceof Error) setError(err.message)
} Prevention
- Hide or disable the 'launch at login' toggle when the autostart status reports supported:false (the page already does this at the UI level)
- Wait for the autostart status query to load before enabling the control so undefined is never mistaken for supported
- On unsupported platforms, offer a documented alternative (systemd unit, cron @reboot) next to the toggle
When it happens
Trigger: Toggling 'launch at login' on a platform where the backend's autostart integration (login-item/desktop-file registration) is unavailable — e.g. a headless Linux server, an unsupported distribution without a desktop environment, or an OS the backend has no launcher integration for — then saving.
Common situations: Running the dashboard on a server/NAS where there is no login session to hook; running in a container; the autostart status endpoint returned supported:false after an OS update; UI rendered the toggle because the status query had not loaded yet (undefined is treated as supported).
Related errors
- Enter and confirm the new login password.
- The login passwords do not match.
- Login password must be at least 8 characters.
- ${label} must be a JSON object.
- ${label}.${key} must be a string.
AI-assisted analysis of sipeed/picoclaw@49183d7e8d (2026-08-15).
Data as JSON: /api/errors/8a28339622809171.
Report an issue: GitHub.