[GH-ISSUE #1532] macOS Desktop stuck on loading spinner after update: backend DB init uses read-only app bundle path #450

Closed
opened 2026-10-31 22:13:09 +00:00 by bsakaguchi · 2 comments
Owner

Originally created by @benceruleanlu on GitHub (Jan 15, 2026).
Original GitHub issue: https://github.com/Comfy-Org/desktop/issues/1532

Summary

After updating Desktop, the UI is permanently stuck on the full-screen loading spinner. Backend logs show sqlite DB init fails because the default DB path resolves inside the .app bundle (read-only), and /object_info now triggers a DB scan which errors, causing the frontend to never finish loading.

Environment

  • macOS (Darwin)
  • ComfyUI version: 0.9.1 (from log)
  • App path in log: /Applications/ComfyUI.app/Contents/Resources/ComfyUI
  • User dir: /Users/ben/Downloads/ComfyUI/user

Logs (key lines)

Failed to initialize database... (sqlite3.OperationalError) unable to open database file

fast DB scan failed for models: 'NoneType' object is not callable
Traceback ...
  File "/Applications/ComfyUI.app/Contents/Resources/ComfyUI/app/assets/scanner.py", line 78, in seed_assets
    with create_session() as sess:
  File "/Applications/ComfyUI.app/Contents/Resources/ComfyUI/app/database/db.py", line 112, in create_session
    return Session()
TypeError: 'NoneType' object is not callable

Error handling request from 127.0.0.1
  File "/Applications/ComfyUI.app/Contents/Resources/ComfyUI/server.py", line 689, in get_object_info
    seed_assets(["models"])

Suspected root cause

Desktop runs ComfyUI from the app bundle. In ComfyUI backend, the default DB path is computed relative to the code location:

comfy/cli_args.py: database_default_path = abspath(dirname(__file__)/../user/comfyui.db)

So in Desktop it resolves to:

/Applications/ComfyUI.app/Contents/Resources/ComfyUI/user/comfyui.db

This location is read-only on macOS, so init_db() fails and Session stays None.

In v0.9.1, /object_info now calls seed_assets(["models"]) (assets autoscan), which immediately tries to open a DB session and fails, returning 500. The frontend waits on /object_info and remains on the loading spinner indefinitely.

Why this appears now

  • In earlier versions (e.g. v0.8.2), /object_info didn’t call seed_assets, so the DB failure didn’t block the frontend.
  • v0.9.1 adds assets autoscan on /object_info, surfacing the read-only DB path issue.

Expected

Desktop should use a writable DB location (e.g., under the user directory / Application Support), or pass --database-url / --user-directory to the backend so the DB is not inside the app bundle.

Possible fixes

  • Desktop: pass --database-url or --user-directory pointing to a writable path.
  • Backend: derive default DB path from --user-directory rather than the code location; and/or guard seed_assets() when DB init fails.

Repro (Desktop)

  1. Install/update Desktop to a build with ComfyUI 0.9.1.
  2. Launch Desktop on macOS.
  3. Observe full-screen spinner indefinitely; backend logs show DB init failure and /object_info 500.

┆Issue is synchronized with this Notion page by Unito

Originally created by @benceruleanlu on GitHub (Jan 15, 2026). Original GitHub issue: https://github.com/Comfy-Org/desktop/issues/1532 ## Summary After updating Desktop, the UI is permanently stuck on the full-screen loading spinner. Backend logs show sqlite DB init fails because the default DB path resolves inside the `.app` bundle (read-only), and `/object_info` now triggers a DB scan which errors, causing the frontend to never finish loading. ## Environment - macOS (Darwin) - ComfyUI version: 0.9.1 (from log) - App path in log: `/Applications/ComfyUI.app/Contents/Resources/ComfyUI` - User dir: `/Users/ben/Downloads/ComfyUI/user` ## Logs (key lines) ``` Failed to initialize database... (sqlite3.OperationalError) unable to open database file fast DB scan failed for models: 'NoneType' object is not callable Traceback ... File "/Applications/ComfyUI.app/Contents/Resources/ComfyUI/app/assets/scanner.py", line 78, in seed_assets with create_session() as sess: File "/Applications/ComfyUI.app/Contents/Resources/ComfyUI/app/database/db.py", line 112, in create_session return Session() TypeError: 'NoneType' object is not callable Error handling request from 127.0.0.1 File "/Applications/ComfyUI.app/Contents/Resources/ComfyUI/server.py", line 689, in get_object_info seed_assets(["models"]) ``` ## Suspected root cause Desktop runs ComfyUI from the app bundle. In ComfyUI backend, the default DB path is computed relative to the code location: ``` comfy/cli_args.py: database_default_path = abspath(dirname(__file__)/../user/comfyui.db) ``` So in Desktop it resolves to: ``` /Applications/ComfyUI.app/Contents/Resources/ComfyUI/user/comfyui.db ``` This location is read-only on macOS, so `init_db()` fails and `Session` stays `None`. In v0.9.1, `/object_info` now calls `seed_assets(["models"])` (assets autoscan), which immediately tries to open a DB session and fails, returning 500. The frontend waits on `/object_info` and remains on the loading spinner indefinitely. ## Why this appears now - In earlier versions (e.g. v0.8.2), `/object_info` didn’t call `seed_assets`, so the DB failure didn’t block the frontend. - v0.9.1 adds assets autoscan on `/object_info`, surfacing the read-only DB path issue. ## Expected Desktop should use a writable DB location (e.g., under the user directory / Application Support), or pass `--database-url` / `--user-directory` to the backend so the DB is not inside the app bundle. ## Possible fixes - Desktop: pass `--database-url` or `--user-directory` pointing to a writable path. - Backend: derive default DB path from `--user-directory` rather than the code location; and/or guard `seed_assets()` when DB init fails. ## Repro (Desktop) 1. Install/update Desktop to a build with ComfyUI 0.9.1. 2. Launch Desktop on macOS. 3. Observe full-screen spinner indefinitely; backend logs show DB init failure and `/object_info` 500. ┆Issue is synchronized with this [Notion page](https://www.notion.so/Issue-1532-macOS-Desktop-stuck-on-loading-spinner-after-update-backend-DB-init-uses-read-only-ap-2e96d73d365081e291f0d43ee418163a) by [Unito](https://www.unito.io)
bsakaguchi 2026-10-31 22:13:09 +00:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@dosubot[bot] commented on GitHub (Jan 15, 2026):

This issue is caused by the backend database path defaulting to a read-only location inside the macOS app bundle, which prevents SQLite from initializing and causes the frontend to hang on the loading spinner. This surfaced in v0.9.1 because /object_info now triggers a DB scan on startup, making DB init failures block the UI.

The Desktop app launches the backend with CLI arguments, including --user-directory, but by default, the DB path may still resolve inside the app bundle if not explicitly overridden. You can inject custom backend launch arguments (like --database-url pointing to a writable location) using the Comfy.Server.LaunchArgs setting in the Desktop app's config. This mechanism is supported in the code and allows you to work around the issue without modifying the app bundle or backend code directly.

For maintainers, improving the default DB path logic to always derive from a writable user directory, and/or guarding asset scans when DB init fails, would prevent this class of startup failures. There is currently no official documentation or merged PRs that address this specific macOS DB path issue, but the workaround above is supported by the app's architecture.

Relevant code:

Let me know if you want a step-by-step on how to set Comfy.Server.LaunchArgs for this workaround.

To reply, just mention @dosu.


Docs are dead. Just use Dosu.

Leave Feedback Ask Dosu about desktop Share Dosu with your team

<!-- gh-comment-id:3753383173 --> @dosubot[bot] commented on GitHub (Jan 15, 2026): <!-- Answer --> This issue is caused by the backend database path defaulting to a read-only location inside the macOS app bundle, which prevents SQLite from initializing and causes the frontend to hang on the loading spinner. This surfaced in v0.9.1 because `/object_info` now triggers a DB scan on startup, making DB init failures block the UI. The Desktop app launches the backend with CLI arguments, including `--user-directory`, but by default, the DB path may still resolve inside the app bundle if not explicitly overridden. You can inject custom backend launch arguments (like `--database-url` pointing to a writable location) using the `Comfy.Server.LaunchArgs` setting in the Desktop app's config. This mechanism is supported in the code and allows you to work around the issue without modifying the app bundle or backend code directly. For maintainers, improving the default DB path logic to always derive from a writable user directory, and/or guarding asset scans when DB init fails, would prevent this class of startup failures. There is currently no official documentation or merged PRs that address this specific macOS DB path issue, but the workaround above is supported by the app's architecture. Relevant code: - [Backend launch and argument assembly](https://github.com/Comfy-Org/desktop/blob/0a5fcbbbf492837942e79bee89194577679583b9/src/main-process/comfyServer.ts#L30-L224) - [Custom launch arguments via settings](https://github.com/Comfy-Org/desktop/blob/0a5fcbbbf492837942e79bee89194577679583b9/src/config/comfySettings.ts#L12-L167) Let me know if you want a step-by-step on how to set `Comfy.Server.LaunchArgs` for this workaround. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=Comfy-Org%2Fdesktop).* --- Docs are dead. Just use [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-tagline&utm_term=Comfy-Org%2Fdesktop). [![Leave Feedback](https://img.shields.io/badge/Leave%20Feedback-555555?style=flat)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-feedback&utm_term=Comfy-Org%2Fdesktop#message_id=1c1b1a80-5bee-400b-ad27-1ec2870a06c7) [![Ask Dosu about desktop](https://img.shields.io/badge/Ask%20Dosu%20about%20desktop-2f7b3f?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODkiIHZpZXdCb3g9IjAgMCA4NiA4OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTIzNiAxMi43OTI4TDE3Ljc1OTMgNi42ODE4OFY3Mi41NjY3TDUuMjkyMzYgODQuMDYxOFYxMi43OTI4WiIgZmlsbD0iI0I0QkI5MSIvPjxwYXRoIGQ9Ik0xOC4yNTc1IDczLjExOTZMNTkuMTMyOSA3Mi43NDhMNTEuNzAxMSA4Mi40MDk1TDI5LjAzMzggODYuMjkxTDYuMjM5NjIgODUuMTU1NEwxOC4yNTc1IDczLjExOTZaIiBmaWxsPSIjNzc4NTYxIi8%2BPHBhdGggZD0iTTE3LjQ5MTYgMy43MzYzM0wzLjU4NTU3IDEyLjcwOTlWODMuNTc5MkMzLjU4NTU3IDg0Ljc1NDIgNC45ODU2MyA4NS4zNjUyIDUuODQ3MDUgODQuNTY2TDE5LjYyOTYgNzEuNzgwMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjQyODQ0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48bWFzayBpZD0iZG9zdS1kLWN1dG91dCIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAuNzA0IDAuNTE4MDY2SDE3LjA0MzlWNzYuMjIyMUg0MC43MDRINDIuNTgwNUg0Ny44MDEzQzY4LjcwNjQgNzYuMjIyMSA4NS42NTMzIDU5LjI3NTIgODUuNjUzMyAzOC4zNzAxQzg1LjY1MzMgMTcuNDY1IDY4LjcwNjMgMC41MTgwNjYgNDcuODAxMyAwLjUxODA2Nkg0Mi41ODA1SDQwLjcwNFoiLz48L21hc2s%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MC43MDQgMC41MTgwNjZIMTcuMDQzOVY3Ni4yMjIxSDQwLjcwNEg0Mi41ODA1SDQ3LjgwMTNDNjguNzA2NCA3Ni4yMjIxIDg1LjY1MzMgNTkuMjc1MiA4NS42NTMzIDM4LjM3MDFDODUuNjUzMyAxNy40NjUgNjguNzA2MyAwLjUxODA2NiA0Ny44MDEzIDAuNTE4MDY2SDQyLjU4MDVINDAuNzA0WiIgZmlsbD0iI0YzRjZGMSIvPjxwYXRoIGQ9Ik0xNy4wNDM5IDAuNTE4MDY2Vi02LjU3OTE5SDkuOTQ2NjlWMC41MTgwNjZIMTcuMDQzOVpNMTcuMDQzOSA3Ni4yMjIxSDkuOTQ2NjlWODMuMzE5NEgxNy4wNDM5Vjc2LjIyMjFaTTE3LjA0MzkgNy42MTUzMkg0MC43MDRWLTYuNTc5MTlIMTcuMDQzOVY3LjYxNTMyWk0yNC4xNDEyIDc2LjIyMjFWMC41MTgwNjZIOS45NDY2OVY3Ni4yMjIxSDI0LjE0MTJaTTQwLjcwNCA2OS4xMjQ5SDE3LjA0MzlWODMuMzE5NEg0MC43MDRWNjkuMTI0OVpNNDIuNTgwNSA2OS4xMjQ5SDQwLjcwNFY4My4zMTk0SDQyLjU4MDVWNjkuMTI0OVpNNDcuODAxMyA2OS4xMjQ5SDQyLjU4MDVWODMuMzE5NEg0Ny44MDEzVjY5LjEyNDlaTTc4LjU1NiAzOC4zNzAxQzc4LjU1NiA1NS4zNTU1IDY0Ljc4NjcgNjkuMTI0OSA0Ny44MDEzIDY5LjEyNDlWODMuMzE5NEM3Mi42MjYxIDgzLjMxOTQgOTIuNzUwNSA2My4xOTQ5IDkyLjc1MDUgMzguMzcwMUg3OC41NTZaTTQ3LjgwMTMgNy42MTUzMkM2NC43ODY2IDcuNjE1MzIgNzguNTU2IDIxLjM4NDcgNzguNTU2IDM4LjM3MDFIOTIuNzUwNUM5Mi43NTA1IDEzLjU0NTMgNzIuNjI2IC02LjU3OTE5IDQ3LjgwMTMgLTYuNTc5MTlWNy42MTUzMlpNNDIuNTgwNSA3LjYxNTMySDQ3LjgwMTNWLTYuNTc5MTlINDIuNTgwNVY3LjYxNTMyWk00MC43MDQgNy42MTUzMkg0Mi41ODA1Vi02LjU3OTE5SDQwLjcwNFY3LjYxNTMyWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjZG9zdS1kLWN1dG91dCkiLz48cGF0aCBkPSJNNjguOTIxNSAzNi4wMTM1QzY4LjkyMTUgMzYuMDEzNSA2NS43MzY5IDQ5LjQ3MzggNTEuNDIzMSA0OS40NzM4QzM3LjEwOTMgNDkuNDczOCAzMi41Nzg3IDM3LjM1OTYgMzIuNTc4NyAzNi4wMTM1IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjcuNjkxNjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0wLjM0ODYzMyA4NS40OTQ2QzAuMzQ4NjMzIDg1LjQ5NDYgMjkuNDg1NiA4NS44MzA5IDM0LjgwOSA4NS42OThDNDQuODMzNyA4NS40NDc3IDUxLjI4NzIgODQuNDAyIDU3LjUyNjkgNzguOTcyNEM2Mi44MTI5IDc0LjM3MjcgNzUuMTM0MiA1OS42ODM2IDc1LjEzNDIgNTkuNjgzNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjE2NDgyIi8%2BPC9zdmc%2B)](https://github.dosu.com/Comfy-Org/desktop?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-ask-repo&utm_term=Comfy-Org%2Fdesktop) [![Share Dosu with your team](https://img.shields.io/badge/Share%20Dosu%20with%20your%20team-1f6feb?style=flat)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-share-team&utm_term=Comfy-Org%2Fdesktop)
Author
Owner

@benceruleanlu commented on GitHub (Jan 15, 2026):

Additional option worth noting:

  1. Backend default fix (best long-term): compute the default DB path from --user-directory or --base-directory instead of __file__. This fixes all packagers but requires a ComfyUI release and updating the bundled backend.
<!-- gh-comment-id:3757410555 --> @benceruleanlu commented on GitHub (Jan 15, 2026): Additional option worth noting: 2. Backend default fix (best long-term): compute the default DB path from `--user-directory` or `--base-directory` instead of `__file__`. This fixes all packagers but requires a ComfyUI release and updating the bundled backend.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/desktop#450
No description provided.