Skip to content

feat: add MiniMax provider with Anthropic-compatible API#7640

Merged
jamadeo merged 3 commits intoblock:mainfrom
ximiximi423:feat/minimax-provider
Mar 10, 2026
Merged

feat: add MiniMax provider with Anthropic-compatible API#7640
jamadeo merged 3 commits intoblock:mainfrom
ximiximi423:feat/minimax-provider

Conversation

@ximiximi423
Copy link
Copy Markdown
Contributor

  • Adds MiniMaxProvider implementing the Goose Provider trait
  • Supports MiniMax-M2.5 and MiniMax-M2.5-highspeed
  • Authenticates via MINIMAX_API_KEY with optional MINIMAX_HOST override

I have already test it manually, please kindly help to review it.

Add support for MiniMax AI models (MiniMax-M2.5 and MiniMax-M2.5-highspeed)
via the Anthropic-compatible API endpoint. Includes provider implementation,
registry registration, and UI logo assets.

Made-with: Cursor
Signed-off-by: ximi <[email protected]>
Made-with: Cursor
Signed-off-by: ximi <[email protected]>
@ximiximi423 ximiximi423 force-pushed the feat/minimax-provider branch from e83b120 to 34b2c3b Compare March 4, 2026 11:32
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 34b2c3babe

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".


let response = self
.with_retry(|| async {
let request = self.api_client.request(Some(session_id), "v1/messages");
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Normalize overridden MINIMAX_HOST before appending path

The stream request always appends v1/messages, but MINIMAX_HOST is used verbatim, so any override that already includes /v1 (for example the MiniMax API URL form used elsewhere in the repo: .../anthropic/v1) will resolve to /anthropic/v1/v1/messages and fail at runtime. This breaks provider connectivity specifically for users who configure MINIMAX_HOST with a versioned base URL; trimming a trailing /v1 (or separating host and base path) would make both forms work.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default MINIMAX_API_HOST follows MiniMax's official documentation, which does not include a trailing /v1 in the base URL. Maybe it's a not big issue.

@DOsinga
Copy link
Copy Markdown
Collaborator

DOsinga commented Mar 4, 2026

Can this just be a declarative provider if it is anthropic compatible?

Replace Rust implementation with JSON config as suggested in review.
MiniMax uses Anthropic-compatible API, so declarative provider is cleaner.

Signed-off-by: ximi <[email protected]>
Made-with: Cursor
@ximiximi423
Copy link
Copy Markdown
Contributor Author

Thanks for the suggestion, @DOsinga! Since MiniMax is fully Anthropic-compatible, a declarative provider is much cleaner. I've refactored the implementation to use a JSON config file instead of the Rust provider. Please kindly help to review it when you have a moment. Thank you for your time and feedback!

@jamadeo jamadeo added this pull request to the merge queue Mar 10, 2026
Merged via the queue into block:main with commit ae6dba5 Mar 10, 2026
20 checks passed
lifeizhou-ap added a commit that referenced this pull request Mar 11, 2026
* main: (45 commits)
  fix: resolve {{ recipe_dir }} in nested sub-recipe paths during secret discovery (#7797)
  Add @DOsinga as CODEOWNER for documentation (#7799)
  feat: Add summarize tool for deterministic reads (#7054)
  fix(api): use camelCase in CallToolResponse and add type discriminators to ContentBlock (#7487)
  feat: ACP providers for claude code and codex (#6605)
  chore(deps): bump express-rate-limit from 8.2.1 to 8.3.0 in /evals/open-model-gym/mcp-harness (#7703)
  feat(openai): capture reasoning summaries from responses API (#7375)
  Fix some dependencies (#7794)
  fix: improve keyring availability error detection (#7766)
  feat: add MiniMax provider with Anthropic-compatible API (#7640)
  feat: add Tensorix as a declarative provider (#7712)
  fix(security): remove insecure default secret from GOOSE_EXTERNAL_BACKEND (#7783)
  refactor: Convert Tanzu provider to declarative JSON config (#7124)
  replaces https://github.com/block/goose/pull/7340/changes (#7786)
  feat(summon): make skill supporting files individually loadable via load() (#7583)
  Keep toast open on failed extension (#7771)
  fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
  fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
  fix: write to real file if config.yaml is symlink (#7669)
  fix: preserve pairings when stopping gateway (#7733)
  ...
lifeizhou-ap added a commit that referenced this pull request Mar 11, 2026
* main: (69 commits)
  fix: resolve {{ recipe_dir }} in nested sub-recipe paths during secret discovery (#7797)
  Add @DOsinga as CODEOWNER for documentation (#7799)
  feat: Add summarize tool for deterministic reads (#7054)
  fix(api): use camelCase in CallToolResponse and add type discriminators to ContentBlock (#7487)
  feat: ACP providers for claude code and codex (#6605)
  chore(deps): bump express-rate-limit from 8.2.1 to 8.3.0 in /evals/open-model-gym/mcp-harness (#7703)
  feat(openai): capture reasoning summaries from responses API (#7375)
  Fix some dependencies (#7794)
  fix: improve keyring availability error detection (#7766)
  feat: add MiniMax provider with Anthropic-compatible API (#7640)
  feat: add Tensorix as a declarative provider (#7712)
  fix(security): remove insecure default secret from GOOSE_EXTERNAL_BACKEND (#7783)
  refactor: Convert Tanzu provider to declarative JSON config (#7124)
  replaces https://github.com/block/goose/pull/7340/changes (#7786)
  feat(summon): make skill supporting files individually loadable via load() (#7583)
  Keep toast open on failed extension (#7771)
  fix(ui-desktop): unify path resolution around GOOSE_PATH_ROOT (#7335)
  fix: pass OAuth scopes to DCR and extract granted_scopes from token response (#7571)
  fix: write to real file if config.yaml is symlink (#7669)
  fix: preserve pairings when stopping gateway (#7733)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants