openclaw - ✅(Solved) Fix [Bug]: MiniMax text provider loads, but TTS shows `minimax (not configured)` / `no_provider_registered` on 2026.4.2 [1 pull requests, 2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#61412Fetched 2026-04-08 02:58:55
View on GitHub
Comments
2
Participants
3
Timeline
4
Reactions
1
Author
Timeline (top)
commented ×2cross-referenced ×1labeled ×1

On OpenClaw 2026.4.2, MiniMax appears to be configured and loaded correctly for text/image models, but MiniMax TTS is still unavailable in /tts status.

/tts status shows:

  • Provider: minimax (❌ not configured)
  • last attempt detail includes minimax: skipped(no_provider_registered)

At the same time:

  • openclaw models list shows MiniMax models as configured
  • openclaw plugins list shows the stock MiniMax plugin as loaded

So this looks like MiniMax text provider is registered successfully, but the MiniMax speech/TTS provider is not being registered into the TTS provider registry.

Root Cause

So MiniMax is skipped before any actual TTS request is made. Additional diagnostics Config validation openclaw config validate Output: Config valid: ~/.openclaw/openclaw.json MiniMax models are present openclaw models list | rg -i minimax Output: minimax/MiniMax-M2.7-highspeed text+image 200k no yes fallback#1,configured minimax/MiniMax-M2.1-highspeed text 200k no yes fallback#2 minimax/MiniMax-VL-01 text 200k no yes image,configured bailian/MiniMax-M2.5 text 977k no yes configured MiniMax plugin is loaded openclaw plugins list | rg -i minimax Output includes: @openclaw/ minimax openclaw loaded stock:minimax/index.js 2026.4.2 Notes This does not look like a general MiniMax auth/config problem, because MiniMax models are already available in models list and the stock MiniMax plugin is loaded. It looks specifically like the MiniMax speech/TTS provider is not being registered, even though the MiniMax provider/plugin is present. Possible regression area Maybe something in: MiniMax bundled plugin capability registration TTS provider registry plugin discovery CN base URL handling for MiniMax speech provider distinction between text provider availability vs speech provider availability

Fix Action

Fixed

PR fix notes

PR #61605: fix(gateway): load TTS speech plugin owners at startup (#61412)

Description (problem / solution / changelog)

Summary

  • Problem: Gateway startup uses a minimal plugin set (channels + startup sidecars). Provider extensions such as MiniMax register TTS via registerSpeechProvider, but were not in that set, so getSpeechProvider could return nothing and TTS failed with no_provider_registered while text models still worked.
  • Why it matters: Users configuring messages.tts for MiniMax (or other extension-owned speech backends) expect /tts and auto-TTS to resolve the same provider as the CLI/catalog.
  • What changed: resolveGatewayStartupPluginIds unions plugin ids that own the speech providers referenced by messages.tts.provider and messages.tts.providers (via manifest contracts.speechProviders). New helper resolveGatewayTtsSpeechPluginIds encapsulates the lookup.
  • What did NOT change: Channel/sidecar selection rules, plugin activation semantics, and TTS runtime behavior beyond ensuring the owning plugin loads when TTS config references it.

Change Type

  • Bug fix

Scope

  • Gateway / orchestration

Linked Issue/PR

  • Closes #61412
  • This PR fixes a bug or regression

Root Cause

  • Root cause: Gateway startup intentionally omitted provider-only plugins; speech registration happens in those plugins register()hooks, so the active registry never received theirSpeechProviderPlugin` entries.
  • Missing detection / guardrail: Startup scope did not consider messages.tts speech provider ownership.
  • Contributing context: Model inference can load providers on demand; TTS reads the active plugin registry.

Regression Test Plan

  • Unit test
  • Target test or file: src/plugins/channel-plugin-ids.test.ts
  • Scenario: Config with messages.tts referencing a speech provider declared on a manifest plugin adds that plugin id to gateway startup ids.

User-visible / Behavior Changes

  • Gateway loads the bundled plugin that owns the configured TTS speech provider when messages.tts names that provider, so TTS can register and run (e.g. MiniMax).

Diagram

N/A

Security Impact

  • New permissions/capabilities? No — only aligns gateway startup plugin load with already-configured messages.tts speech provider ids.

Made with Cursor

Changed files

  • CHANGELOG.md (modified, +1/-0)
  • src/plugins/channel-plugin-ids.test.ts (modified, +77/-1)
  • src/plugins/channel-plugin-ids.ts (modified, +68/-1)

Code Example

"messages": {
  "tts": {
    "auto": "always",
    "mode": "final",
    "provider": "minimax",
    "timeoutMs": 30000,
    "maxTextLength": 1500,
    "providers": {
      "minimax": {
        "apiKey": "REDACTED",
        "baseUrl": "https://api.minimaxi.com",
        "model": "speech-2.8-hd",
        "voiceId": "yinlang_official_20260317",
        "speed": 1.0,
        "vol": 1.0,
        "pitch": 0
      }
    },
    "modelOverrides": {
      "enabled": false
    }
  }
}What I expected
MiniMax should be available as a registered TTS provider, and /tts status should show it as configured/usable.
What actually happened
/tts status:
📊 TTS status
State: ✅ enabled
Provider: minimax (❌ not configured)
Text limit: 1500 chars
Auto-summary: on

Last attempt:Provider: microsoft
Fallback: minimax -> microsoft
Attempts: minimax -> openai -> elevenlabs -> microsoft
Attempt details: minimax:skipped(no_provider_registered), openai:failed(provider_error), elevenlabs:skipped(not_configured), microsoft:success(ok)

So MiniMax is skipped before any actual TTS request is made.
Additional diagnostics
Config validation
openclaw config validate
Output:
Config valid: ~/.openclaw/openclaw.json
MiniMax models are present
openclaw models list | rg -i minimax
Output:
minimax/MiniMax-M2.7-highspeed             text+image 200k     no    yes   fallback#1,configured
minimax/MiniMax-M2.1-highspeed             text       200k     no    yes   fallback#2
minimax/MiniMax-VL-01                      text       200k     no    yes   image,configured
bailian/MiniMax-M2.5                       text       977k     no    yes   configured
MiniMax plugin is loaded
openclaw plugins list | rg -i minimax
Output includes:
@openclaw/ minimax  openclaw  loaded  stock:minimax/index.js  2026.4.2
Notes
This does not look like a general MiniMax auth/config problem, because MiniMax models are already available in models list and the stock MiniMax plugin is loaded.
It looks specifically like the MiniMax speech/TTS provider is not being registered, even though the MiniMax provider/plugin is present.
Possible regression area
Maybe something in:
MiniMax bundled plugin capability registration
TTS provider registry plugin discovery
CN base URL handling for MiniMax speech provider
distinction between text provider availability vs speech provider availability


### Steps to reproduce

Reproduction
1. Configure MiniMax provider so MiniMax models appear in openclaw models list
2. Add the messages.tts.providers.minimax config shown above
3. Restart gateway
4. Run /tts status
5. Run /tts audio hello from minimax

comfig:

"messages": {
  "tts": {
    "auto": "always",
    "mode": "final",
    "provider": "minimax",
    "timeoutMs": 30000,
    "maxTextLength": 1500,
    "providers": {
      "minimax": {
        "apiKey": "REDACTED",
        "baseUrl": "https://api.minimaxi.com",
        "model": "speech-2.8-hd",
        "voiceId": "yinlang_official_20260317",
        "speed": 1.0,
        "vol": 1.0,
        "pitch": 0
      }
    },
 }
}



### Expected behavior

MiniMax should register as a valid TTS provider and be used for /tts audio and message TTS.

### Actual behavior

MiniMax remains not configured in TTS, and fallback provider is used instead.

### OpenClaw version

2026.4.2

### Operating system

26.3.1 (25D2128)

### Install method

npm global

### Model

minimax-m2.7

### Provider / routing chain

openclaw -> minimax cn -> minimax m2.7

### Additional provider/model setup details

_No response_

### Logs, screenshots, and evidence
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

Summary

On OpenClaw 2026.4.2, MiniMax appears to be configured and loaded correctly for text/image models, but MiniMax TTS is still unavailable in /tts status.

/tts status shows:

  • Provider: minimax (❌ not configured)
  • last attempt detail includes minimax: skipped(no_provider_registered)

At the same time:

  • openclaw models list shows MiniMax models as configured
  • openclaw plugins list shows the stock MiniMax plugin as loaded

So this looks like MiniMax text provider is registered successfully, but the MiniMax speech/TTS provider is not being registered into the TTS provider registry.

Environment

  • OpenClaw version: 2026.4.2 (d74a122)
  • Install method: global npm install
  • OS: macOS
  • Region/API host: China (https://api.minimaxi.com)
  • MiniMax API key: regular API key (not Coding Plan key)

TTS config

"messages": {
  "tts": {
    "auto": "always",
    "mode": "final",
    "provider": "minimax",
    "timeoutMs": 30000,
    "maxTextLength": 1500,
    "providers": {
      "minimax": {
        "apiKey": "REDACTED",
        "baseUrl": "https://api.minimaxi.com",
        "model": "speech-2.8-hd",
        "voiceId": "yinlang_official_20260317",
        "speed": 1.0,
        "vol": 1.0,
        "pitch": 0
      }
    },
    "modelOverrides": {
      "enabled": false
    }
  }
}What I expected
MiniMax should be available as a registered TTS provider, and /tts status should show it as configured/usable.
What actually happened
/tts status:
📊 TTS status
State: ✅ enabled
Provider: minimax (❌ not configured)
Text limit: 1500 chars
Auto-summary: on

Last attempt:Provider: microsoft
Fallback: minimax -> microsoft
Attempts: minimax -> openai -> elevenlabs -> microsoft
Attempt details: minimax:skipped(no_provider_registered), openai:failed(provider_error), elevenlabs:skipped(not_configured), microsoft:success(ok)

So MiniMax is skipped before any actual TTS request is made.
Additional diagnostics
Config validation
openclaw config validate
Output:
Config valid: ~/.openclaw/openclaw.json
MiniMax models are present
openclaw models list | rg -i minimax
Output:
minimax/MiniMax-M2.7-highspeed             text+image 200k     no    yes   fallback#1,configured
minimax/MiniMax-M2.1-highspeed             text       200k     no    yes   fallback#2
minimax/MiniMax-VL-01                      text       200k     no    yes   image,configured
bailian/MiniMax-M2.5                       text       977k     no    yes   configured
MiniMax plugin is loaded
openclaw plugins list | rg -i minimax
Output includes:
@openclaw/ minimax  openclaw  loaded  stock:minimax/index.js  2026.4.2
Notes
This does not look like a general MiniMax auth/config problem, because MiniMax models are already available in models list and the stock MiniMax plugin is loaded.
It looks specifically like the MiniMax speech/TTS provider is not being registered, even though the MiniMax provider/plugin is present.
Possible regression area
Maybe something in:
MiniMax bundled plugin capability registration
TTS provider registry plugin discovery
CN base URL handling for MiniMax speech provider
distinction between text provider availability vs speech provider availability


### Steps to reproduce

Reproduction
1. Configure MiniMax provider so MiniMax models appear in openclaw models list
2. Add the messages.tts.providers.minimax config shown above
3. Restart gateway
4. Run /tts status
5. Run /tts audio hello from minimax

comfig:

"messages": {
  "tts": {
    "auto": "always",
    "mode": "final",
    "provider": "minimax",
    "timeoutMs": 30000,
    "maxTextLength": 1500,
    "providers": {
      "minimax": {
        "apiKey": "REDACTED",
        "baseUrl": "https://api.minimaxi.com",
        "model": "speech-2.8-hd",
        "voiceId": "yinlang_official_20260317",
        "speed": 1.0,
        "vol": 1.0,
        "pitch": 0
      }
    },
 }
}



### Expected behavior

MiniMax should register as a valid TTS provider and be used for /tts audio and message TTS.

### Actual behavior

MiniMax remains not configured in TTS, and fallback provider is used instead.

### OpenClaw version

2026.4.2

### Operating system

26.3.1 (25D2128)

### Install method

npm global

### Model

minimax-m2.7

### Provider / routing chain

openclaw -> minimax cn -> minimax m2.7

### Additional provider/model setup details

_No response_

### Logs, screenshots, and evidence

```shell

Impact and severity

No response

Additional information

No response

extent analysis

TL;DR

The MiniMax TTS provider is not being registered, despite the MiniMax plugin being loaded and MiniMax models being available, suggesting a potential issue with the TTS provider registry or plugin discovery.

Guidance

  • Verify that the minimax provider is correctly configured in the messages.tts.providers section of the configuration file, including the apiKey, baseUrl, model, and voiceId.
  • Check the OpenClaw logs for any errors or warnings related to the MiniMax plugin or TTS provider registration.
  • Try updating the baseUrl in the minimax provider configuration to a different region or API host to see if it resolves the issue.
  • Investigate the distinction between text provider availability and speech provider availability, as it may be related to the issue.

Example

No code snippet is provided as it is not clearly supported by the issue.

Notes

The issue seems to be specific to the MiniMax speech/TTS provider and not a general MiniMax auth/config problem. The fact that MiniMax models are available in the models list and the stock MiniMax plugin is loaded suggests that the issue lies in the TTS provider registry or plugin discovery.

Recommendation

Apply a workaround by trying a different baseUrl or region for the MiniMax provider, as it may resolve the issue. This is because the problem seems to be related to the CN base URL handling for the MiniMax speech provider.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

MiniMax should register as a valid TTS provider and be used for /tts audio and message TTS.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING