Summary
The Matrix plugin fails to load on the Docker image (ghcr.io/openclaw/openclaw:latest) because send-queue.ts imports KeyedAsyncQueue from a subpath that doesn't exist in the bundled SDK:
[plugins] matrix failed to load from /app/extensions/matrix/index.ts:
Error: Cannot find module '/app/dist/plugin-sdk/index.js/keyed-async-queue'
- /app/extensions/matrix/src/matrix/send-queue.ts
Root Cause
extensions/matrix/src/matrix/send-queue.ts line 1:
import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
In the Docker image, the bundler (Rolldown) compiles plugin-sdk into a single index.js. The /keyed-async-queue subpath doesn't resolve as a separate module — KeyedAsyncQueue is exported from the main plugin-sdk/index.js bundle instead.
Fix
Change the import in send-queue.ts to use the main export:
import { KeyedAsyncQueue } from "openclaw/plugin-sdk";
KeyedAsyncQueue is already re-exported from plugin-sdk/index.js (verified via grep on the built bundle).
Environment
- Image:
ghcr.io/openclaw/openclaw:latest (pulled 2026-03-03)
- Platform: Docker on Linux x86_64
- Matrix homeserver: Synapse (self-hosted)
Impact
All Matrix users on Docker are affected. The Matrix plugin fails silently — the container starts healthy but cannot send or receive Matrix messages.
Workaround
Mount a patched send-queue.ts over the built-in file:
volumes:
- ./patches/send-queue.ts:/app/extensions/matrix/src/matrix/send-queue.ts:ro
Where patches/send-queue.ts has the corrected import path.
Summary
The Matrix plugin fails to load on the Docker image (
ghcr.io/openclaw/openclaw:latest) becausesend-queue.tsimportsKeyedAsyncQueuefrom a subpath that doesn't exist in the bundled SDK:Root Cause
extensions/matrix/src/matrix/send-queue.tsline 1:In the Docker image, the bundler (Rolldown) compiles
plugin-sdkinto a singleindex.js. The/keyed-async-queuesubpath doesn't resolve as a separate module —KeyedAsyncQueueis exported from the mainplugin-sdk/index.jsbundle instead.Fix
Change the import in
send-queue.tsto use the main export:KeyedAsyncQueueis already re-exported fromplugin-sdk/index.js(verified via grep on the built bundle).Environment
ghcr.io/openclaw/openclaw:latest(pulled 2026-03-03)Impact
All Matrix users on Docker are affected. The Matrix plugin fails silently — the container starts healthy but cannot send or receive Matrix messages.
Workaround
Mount a patched
send-queue.tsover the built-in file:Where
patches/send-queue.tshas the corrected import path.