Appearance
Troubleshooting
Chat page never loads
Symptom: the page stays at the loading spinner.
Check:
- Browser DevTools → Network. Did
index.htmlload? Did the bundled JS load? Any 404s onassets/*.js? - WebSocket connection to
/nats-ws— is the WS handshake completing? <matrix-dsl-host>data-statusattribute — what value?connectingmeans WS open, bootstrap not done.hivecast statusandhivecast runtimes— Host alive, CHAT runtime running?
If data-status === 'connected' but the page still shows the loading screen, the readiness logic is waiting on Chat-side initialization. Open the browser console for [MatrixChat] errors.
"No bound runtime config and no explicit runtime-mode declaration were found"
Source: bind-chat-services.ts:111. Means: the page was rendered but bindChatServices was never called with a config. Two ways this happens:
- Wrong bootstrap path. The Host Service runner didn't call
createHostManagedChatbefore mounting the page. Check the runtime's startup code. - Wrong runtime-mode hint. In dev mode,
chat-app[runtime-mode]ormatrix-dsl-host[bootstrap-mode]must declare the mode. Without either, the resolver throws.
Fix: ensure the runtime entrypoint binds services before the browser tries to read them.
"[Dependency Unavailable: No activity completed on the prompt stream...]"
Source: ChatApp.ts:3296. Means: Chat sent a prompt to system.agents, no $activity frames returned within the timeout, and the dependency probe found a missing service.
Check, in order:
matrix invoke system.agents $ping '{}'— agent responds?matrix invoke system.inference status.get '{}'—effective.providerset?- Provider credentials in
system.factotum? - Provider driver runtime running? (
matrix invoke system.runtimes runtimes.registered '{}'should include the driver app.)
See inference dependency.
"Prompt rejected by system.agents for <target>"
system.agents ACK returned ok: false. Read the ACK content — it usually includes a reason. Common causes:
- Target mount is not registered in
system.registry. principalIdis missing andsystem.agentsrequires it.- Session ID was specified but does not exist.
Sessions tab shows backend "legacy"
The Sessions tab in Director surfaces the backend mode. If it shows legacy, Chat (or Director) fell back from the canonical mount to the compat alias. Run:
bash
matrix invoke system.agents $introspect '{}'
matrix invoke system.agents.memory $introspect '{}'If the agents introspect succeeds but the memory introspect fails, the deployment mounts only the legacy alias for memory. Update the agents package to a build that exposes system.agents.memory.
Stream timeout
Source: ChatApp.ts:3295 (stream timeout — no events received). Means: streaming started, and then $activity frames stopped arriving. Check:
system.observability.tracingis mounted; trace activity for the chat session.journalctl -u matrix-host-edge.servicefor provider-driver errors.- Per-runtime log for the inference driver.
Inline component fails to mount
User typed /files and nothing appeared. Likely causes:
- The
mx-filescomponent is not registered (its package is not running). chat.messagesrejected themessages.add-componentop.
Verify the package is up:
bash
matrix invoke system.runtimes runtimes.registered '{}' | jq '.runtimes[] | .app'Persisted session won't resume
User picks an old session, transcript stays empty. Check:
bash
matrix invoke system.agents session_state.read \
'{"sessionId":"<id>","key":"transcript"}'If data is empty/null, the session existed but had no persisted transcript (e.g., it was abandoned mid-prompt before any frame completed). Start a new session.
Theme didn't change after /theme
config.theme.persistScope: 'user' requires ChatPreferencesProxy to be reachable. If the proxy is offline, the theme change is local-only and won't persist past reload. Check chat.preferences is mounted.
See also
Source:
projects/matrix-3/packages/chat/src/ChatApp.ts:3287-3401(timeouts/dependencies),chat/src/runtime/bind-chat-services.ts:108-115(mode error),chat/src/contracts/IChatConversationService.ts(rejection shape).