Problem
GAIA has no mechanism to communicate Lemonade's internal state to the user. This creates three distinct failure experiences that all look the same — a generic error — when the underlying causes and correct user actions are completely different.
Observed Behaviour
-
Model still downloading — Lemonade shows ~90% progress internally, but GAIA displays "No model loaded" in the top-right corner. Sending a query results in GAIA spinning on "Thinking…", flashing "Cannot connect to GAIA agent" briefly, then eventually returning: "I wasn't able to generate a response, please make sure Lemonade server is running and try again." The message is inaccurate — Lemonade IS running, it's just not ready yet.
-
Lemonade busy / warming up — When Lemonade is busy loading or processing, GAIA gives no indication of this. The user sees a generic connection error with no context.
-
Genuine connection loss — Currently indistinguishable from cases 1 and 2 above.
Expected Behaviour
GAIA should surface Lemonade's state with distinct, accurate messaging for each case:
| Lemonade State |
Desired GAIA UI Response |
| Model downloading |
Status indicator: "Downloading model… (X%)" — disable input or show soft warning |
| Model loading into memory |
Status indicator: "Loading model, almost ready…" |
| Lemonade busy / slow first response |
"Model is warming up, this may take a moment…" instead of an error |
| Genuine connection loss |
Clear error: "Cannot reach Lemonade. Is it running?" with retry option |
| Timeout during download |
"Model is still downloading. Please wait until Lemonade is ready before sending a query." |
Proposed Approach
- Poll Lemonade's status endpoint (if available) on startup and surface download/load progress in the GAIA status bar
- Distinguish timeout errors by checking Lemonade availability before surfacing a user-facing error — if Lemonade responds but the model isn't ready, show the appropriate waiting state rather than a failure
- Disable or soft-lock the chat input while the model is not yet ready, with a clear explanation why
Impact
- First-run experience is broken — new users will think GAIA is broken when the model is simply still downloading
- No path to self-serve recovery — the current error message tells users to check if Lemonade is running, which is correct advice for connection loss but wrong advice for a download-in-progress
- Affects all platforms on first install
Problem
GAIA has no mechanism to communicate Lemonade's internal state to the user. This creates three distinct failure experiences that all look the same — a generic error — when the underlying causes and correct user actions are completely different.
Observed Behaviour
Model still downloading — Lemonade shows ~90% progress internally, but GAIA displays "No model loaded" in the top-right corner. Sending a query results in GAIA spinning on "Thinking…", flashing "Cannot connect to GAIA agent" briefly, then eventually returning: "I wasn't able to generate a response, please make sure Lemonade server is running and try again." The message is inaccurate — Lemonade IS running, it's just not ready yet.
Lemonade busy / warming up — When Lemonade is busy loading or processing, GAIA gives no indication of this. The user sees a generic connection error with no context.
Genuine connection loss — Currently indistinguishable from cases 1 and 2 above.
Expected Behaviour
GAIA should surface Lemonade's state with distinct, accurate messaging for each case:
Proposed Approach
Impact