Skip to content

Matrix plugin fails to load in Docker: keyed-async-queue subpath not resolved #33266

@ecohash-co

Description

@ecohash-co

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions