Skip to content

feat: Provider/Mistral full support for Mistral on OpenClaw 🇫🇷#23845

Merged
shakkernerd merged 25 commits intomainfrom
vincentkoc-code/mistral-rework-semantic-commits
Feb 23, 2026
Merged

feat: Provider/Mistral full support for Mistral on OpenClaw 🇫🇷#23845
shakkernerd merged 25 commits intomainfrom
vincentkoc-code/mistral-rework-semantic-commits

Conversation

@vincentkoc
Copy link
Member

@vincentkoc vincentkoc commented Feb 22, 2026

Summary

This PR reworks earlier attempts at a Mistral provider with a full provider rewrite and finalizes Mistral integration consistency across memory embeddings, onboarding defaults, and docs.

What changed

  • Add full runtime support for memorySearch.provider = "mistral":
    • New Mistral embeddings client/provider using POST /v1/embeddings
    • Default embeddings model: mistral-embed
    • Wire into provider auto-selection and fallback resolution
  • Align memory config/runtime typing + doctor checks with schema support for mistral
  • Refresh onboarding metadata for mistral/mistral-large-latest:
    • context window and max tokens updated to current provider catalog values used by runtime model support
  • Update docs for Mistral embeddings + endpoints and memory provider selection/fallback
  • Add changelog entry in Unreleased

Commit breakdown

  • Memory: add Mistral embeddings provider support
  • Onboarding: refresh Mistral model metadata
  • Docs: document Mistral embeddings and endpoints

Validation

  • pnpm test -- src/memory/embeddings.test.ts src/commands/doctor-memory-search.test.ts src/config/config.schema-regressions.test.ts src/commands/onboard-auth.test.ts

All above targeted tests pass.

Notes

  • pnpm check currently fails due to a pre-existing unrelated TypeScript error in src/infra/npm-pack-install.ts.

Greptile Summary

This PR adds comprehensive Mistral provider support across OpenClaw's memory embeddings, onboarding, and media understanding systems.

Key changes:

  • Full Mistral embeddings provider implementation using /v1/embeddings endpoint with mistral-embed default model
  • Integrated into memory search provider auto-selection, fallback resolution, and doctor checks
  • Updated onboarding flow with Mistral API key auth and model metadata for mistral-large-latest
  • Added Voxtral audio transcription support for media understanding
  • Comprehensive test coverage and documentation updates

Previous review issues resolved:

  • mistral client field now properly declared and assigned in MemoryManagerSyncOps base class (lines 97, 164 in manager.ts, line 986 in manager-sync-ops.ts)
  • MISTRAL_DEFAULT_MODEL_REF constant correctly re-exported from onboard-auth.models.ts following established patterns

Implementation quality:

  • Clean separation of concerns with dedicated embeddings-mistral.ts module
  • Consistent type safety across all integration points
  • Proper error handling for string error bodies in batch utilities
  • Follows existing patterns for provider integration (OpenAI, Gemini, Voyage)

Confidence Score: 5/5

  • This PR is safe to merge with no identified issues
  • The implementation is thorough, well-tested, and addresses all previous review concerns. All integration points are properly wired, types are consistent, tests cover the new functionality, and documentation is comprehensive. The code follows established patterns and includes proper error handling.
  • No files require special attention

Last reviewed commit: ca8151d

@vincentkoc vincentkoc marked this pull request as ready for review February 22, 2026 19:12
@openclaw-barnacle openclaw-barnacle bot added docs Improvements or additions to documentation cli CLI command changes commands Command implementations agents Agent runtime and tooling size: L maintainer Maintainer-authored PR labels Feb 22, 2026
Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

48 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 22, 2026

Additional Comments (2)

src/memory/manager.ts
Missing this.mistral assignment from provider result

providerResult.mistral is populated by createEmbeddingProvider when the Mistral provider is selected, but it's never stored on the manager instance. Other providers (openAi, gemini, voyage) are all assigned here. Add:

    this.openAi = params.providerResult.openAi;
    this.gemini = params.providerResult.gemini;
    this.voyage = params.providerResult.voyage;
    this.mistral = params.providerResult.mistral;
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/memory/manager.ts
Line: 159-161

Comment:
**Missing `this.mistral` assignment from provider result**

`providerResult.mistral` is populated by `createEmbeddingProvider` when the Mistral provider is selected, but it's never stored on the manager instance. Other providers (`openAi`, `gemini`, `voyage`) are all assigned here. Add:

```suggestion
    this.openAi = params.providerResult.openAi;
    this.gemini = params.providerResult.gemini;
    this.voyage = params.providerResult.voyage;
    this.mistral = params.providerResult.mistral;
```

How can I resolve this? If you propose a fix, please make it concise.

src/memory/manager-sync-ops.ts
Missing this.mistral assignment in fallback activation

When the fallback provider switches to Mistral, fallbackResult.mistral is populated but never assigned to this.mistral. This matches the same gap in the constructor (manager.ts:159-161).

    this.openAi = fallbackResult.openAi;
    this.gemini = fallbackResult.gemini;
    this.voyage = fallbackResult.voyage;
    this.mistral = fallbackResult.mistral;
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/memory/manager-sync-ops.ts
Line: 981-983

Comment:
**Missing `this.mistral` assignment in fallback activation**

When the fallback provider switches to Mistral, `fallbackResult.mistral` is populated but never assigned to `this.mistral`. This matches the same gap in the constructor (`manager.ts:159-161`).

```suggestion
    this.openAi = fallbackResult.openAi;
    this.gemini = fallbackResult.gemini;
    this.voyage = fallbackResult.voyage;
    this.mistral = fallbackResult.mistral;
```

How can I resolve this? If you propose a fix, please make it concise.

@vincentkoc vincentkoc changed the title Memory/Mistral: align embeddings runtime, onboarding metadata, and docs feat: Provider/Mistrral full support for Mistral on OpenClaw Feb 22, 2026
@vincentkoc
Copy link
Member Author

Addressed the Greptile findings in follow-up commit af1170fbfa.

Fixes applied:

  • src/memory/manager.ts: persist providerResult.mistral on manager init.
  • src/memory/manager-sync-ops.ts: persist fallbackResult.mistral when switching fallback providers.

Validation run:

  • pnpm format:check
  • pnpm test -- src/memory/embeddings.test.ts src/commands/doctor-memory-search.test.ts

@vincentkoc vincentkoc changed the title feat: Provider/Mistrral full support for Mistral on OpenClaw feat: Provider/Mistral full support for Mistral on OpenClaw Feb 22, 2026
@openclaw-barnacle openclaw-barnacle bot added the gateway Gateway runtime label Feb 22, 2026
@vincentkoc vincentkoc force-pushed the vincentkoc-code/mistral-rework-semantic-commits branch from 9c2c8df to ec5abc0 Compare February 22, 2026 21:29
@vincentkoc
Copy link
Member Author

@greptileai review

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

52 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

@vincentkoc vincentkoc force-pushed the vincentkoc-code/mistral-rework-semantic-commits branch from dce8c75 to d62a35c Compare February 22, 2026 22:02
@vincentkoc
Copy link
Member Author

@greptileai review

@shakkernerd shakkernerd force-pushed the vincentkoc-code/mistral-rework-semantic-commits branch from 46aa76b to 0b6ea2a Compare February 22, 2026 23:28
@vincentkoc vincentkoc changed the title feat: Provider/Mistral full support for Mistral on OpenClaw feat: Provider/Mistral full support for Mistral on OpenClaw 🇫🇷 Feb 22, 2026
@shakkernerd shakkernerd merged commit d92ba4f into main Feb 23, 2026
25 checks passed
@shakkernerd shakkernerd deleted the vincentkoc-code/mistral-rework-semantic-commits branch February 23, 2026 00:03
carlosrivera pushed a commit to myascendai/meshiclaw that referenced this pull request Feb 23, 2026
…law#23845)

* Onboard: add Mistral auth choice and CLI flags

* Onboard/Auth: add Mistral provider config defaults

* Auth choice: wire Mistral API-key flow

* Onboard non-interactive: support --mistral-api-key

* Media understanding: add Mistral Voxtral audio provider

* Changelog: note Mistral onboarding and media support

* Docs: add Mistral provider and onboarding/media references

* Tests: cover Mistral media registry/defaults and auth mapping

* Memory: add Mistral embeddings provider support

* Onboarding: refresh Mistral model metadata

* Docs: document Mistral embeddings and endpoints

* Memory: persist Mistral embedding client state in managers

* Memory: add regressions for mistral provider wiring

* Gateway: add live tool probe retry helper

* Gateway: cover live tool probe retry helper

* Gateway: retry malformed live tool-read probe responses

* Memory: support plain-text batch error bodies

* Tests: add Mistral Voxtral live transcription smoke

* Docs: add Mistral live audio test command

* Revert: remove Mistral live voice test and docs entry

* Onboard: re-export Mistral default model ref from models

* Changelog: credit joeVenner for Mistral work

* fix: include Mistral in auto audio key fallback

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Shakker <shakkerdroid@gmail.com>
gabrielkoo pushed a commit to gabrielkoo/openclaw that referenced this pull request Feb 23, 2026
…law#23845)

* Onboard: add Mistral auth choice and CLI flags

* Onboard/Auth: add Mistral provider config defaults

* Auth choice: wire Mistral API-key flow

* Onboard non-interactive: support --mistral-api-key

* Media understanding: add Mistral Voxtral audio provider

* Changelog: note Mistral onboarding and media support

* Docs: add Mistral provider and onboarding/media references

* Tests: cover Mistral media registry/defaults and auth mapping

* Memory: add Mistral embeddings provider support

* Onboarding: refresh Mistral model metadata

* Docs: document Mistral embeddings and endpoints

* Memory: persist Mistral embedding client state in managers

* Memory: add regressions for mistral provider wiring

* Gateway: add live tool probe retry helper

* Gateway: cover live tool probe retry helper

* Gateway: retry malformed live tool-read probe responses

* Memory: support plain-text batch error bodies

* Tests: add Mistral Voxtral live transcription smoke

* Docs: add Mistral live audio test command

* Revert: remove Mistral live voice test and docs entry

* Onboard: re-export Mistral default model ref from models

* Changelog: credit joeVenner for Mistral work

* fix: include Mistral in auto audio key fallback

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Shakker <shakkerdroid@gmail.com>
mreedr pushed a commit to mreedr/openclaw-custom that referenced this pull request Feb 24, 2026
…law#23845)

* Onboard: add Mistral auth choice and CLI flags

* Onboard/Auth: add Mistral provider config defaults

* Auth choice: wire Mistral API-key flow

* Onboard non-interactive: support --mistral-api-key

* Media understanding: add Mistral Voxtral audio provider

* Changelog: note Mistral onboarding and media support

* Docs: add Mistral provider and onboarding/media references

* Tests: cover Mistral media registry/defaults and auth mapping

* Memory: add Mistral embeddings provider support

* Onboarding: refresh Mistral model metadata

* Docs: document Mistral embeddings and endpoints

* Memory: persist Mistral embedding client state in managers

* Memory: add regressions for mistral provider wiring

* Gateway: add live tool probe retry helper

* Gateway: cover live tool probe retry helper

* Gateway: retry malformed live tool-read probe responses

* Memory: support plain-text batch error bodies

* Tests: add Mistral Voxtral live transcription smoke

* Docs: add Mistral live audio test command

* Revert: remove Mistral live voice test and docs entry

* Onboard: re-export Mistral default model ref from models

* Changelog: credit joeVenner for Mistral work

* fix: include Mistral in auto audio key fallback

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Shakker <shakkerdroid@gmail.com>
brianleach pushed a commit to brianleach/openclaw that referenced this pull request Feb 26, 2026
…law#23845)

* Onboard: add Mistral auth choice and CLI flags

* Onboard/Auth: add Mistral provider config defaults

* Auth choice: wire Mistral API-key flow

* Onboard non-interactive: support --mistral-api-key

* Media understanding: add Mistral Voxtral audio provider

* Changelog: note Mistral onboarding and media support

* Docs: add Mistral provider and onboarding/media references

* Tests: cover Mistral media registry/defaults and auth mapping

* Memory: add Mistral embeddings provider support

* Onboarding: refresh Mistral model metadata

* Docs: document Mistral embeddings and endpoints

* Memory: persist Mistral embedding client state in managers

* Memory: add regressions for mistral provider wiring

* Gateway: add live tool probe retry helper

* Gateway: cover live tool probe retry helper

* Gateway: retry malformed live tool-read probe responses

* Memory: support plain-text batch error bodies

* Tests: add Mistral Voxtral live transcription smoke

* Docs: add Mistral live audio test command

* Revert: remove Mistral live voice test and docs entry

* Onboard: re-export Mistral default model ref from models

* Changelog: credit joeVenner for Mistral work

* fix: include Mistral in auto audio key fallback

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Shakker <shakkerdroid@gmail.com>
mylukin pushed a commit to mylukin/openclaw that referenced this pull request Feb 26, 2026
…law#23845)

* Onboard: add Mistral auth choice and CLI flags

* Onboard/Auth: add Mistral provider config defaults

* Auth choice: wire Mistral API-key flow

* Onboard non-interactive: support --mistral-api-key

* Media understanding: add Mistral Voxtral audio provider

* Changelog: note Mistral onboarding and media support

* Docs: add Mistral provider and onboarding/media references

* Tests: cover Mistral media registry/defaults and auth mapping

* Memory: add Mistral embeddings provider support

* Onboarding: refresh Mistral model metadata

* Docs: document Mistral embeddings and endpoints

* Memory: persist Mistral embedding client state in managers

* Memory: add regressions for mistral provider wiring

* Gateway: add live tool probe retry helper

* Gateway: cover live tool probe retry helper

* Gateway: retry malformed live tool-read probe responses

* Memory: support plain-text batch error bodies

* Tests: add Mistral Voxtral live transcription smoke

* Docs: add Mistral live audio test command

* Revert: remove Mistral live voice test and docs entry

* Onboard: re-export Mistral default model ref from models

* Changelog: credit joeVenner for Mistral work

* fix: include Mistral in auto audio key fallback

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Shakker <shakkerdroid@gmail.com>
r4jiv007 pushed a commit to r4jiv007/openclaw that referenced this pull request Feb 28, 2026
…law#23845)

* Onboard: add Mistral auth choice and CLI flags

* Onboard/Auth: add Mistral provider config defaults

* Auth choice: wire Mistral API-key flow

* Onboard non-interactive: support --mistral-api-key

* Media understanding: add Mistral Voxtral audio provider

* Changelog: note Mistral onboarding and media support

* Docs: add Mistral provider and onboarding/media references

* Tests: cover Mistral media registry/defaults and auth mapping

* Memory: add Mistral embeddings provider support

* Onboarding: refresh Mistral model metadata

* Docs: document Mistral embeddings and endpoints

* Memory: persist Mistral embedding client state in managers

* Memory: add regressions for mistral provider wiring

* Gateway: add live tool probe retry helper

* Gateway: cover live tool probe retry helper

* Gateway: retry malformed live tool-read probe responses

* Memory: support plain-text batch error bodies

* Tests: add Mistral Voxtral live transcription smoke

* Docs: add Mistral live audio test command

* Revert: remove Mistral live voice test and docs entry

* Onboard: re-export Mistral default model ref from models

* Changelog: credit joeVenner for Mistral work

* fix: include Mistral in auto audio key fallback

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Shakker <shakkerdroid@gmail.com>
zooqueen pushed a commit to hanzoai/bot that referenced this pull request Mar 6, 2026
…law#23845)

* Onboard: add Mistral auth choice and CLI flags

* Onboard/Auth: add Mistral provider config defaults

* Auth choice: wire Mistral API-key flow

* Onboard non-interactive: support --mistral-api-key

* Media understanding: add Mistral Voxtral audio provider

* Changelog: note Mistral onboarding and media support

* Docs: add Mistral provider and onboarding/media references

* Tests: cover Mistral media registry/defaults and auth mapping

* Memory: add Mistral embeddings provider support

* Onboarding: refresh Mistral model metadata

* Docs: document Mistral embeddings and endpoints

* Memory: persist Mistral embedding client state in managers

* Memory: add regressions for mistral provider wiring

* Gateway: add live tool probe retry helper

* Gateway: cover live tool probe retry helper

* Gateway: retry malformed live tool-read probe responses

* Memory: support plain-text batch error bodies

* Tests: add Mistral Voxtral live transcription smoke

* Docs: add Mistral live audio test command

* Revert: remove Mistral live voice test and docs entry

* Onboard: re-export Mistral default model ref from models

* Changelog: credit joeVenner for Mistral work

* fix: include Mistral in auto audio key fallback

* Update CHANGELOG.md

* Update CHANGELOG.md

---------

Co-authored-by: Shakker <shakkerdroid@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling cli CLI command changes commands Command implementations docs Improvements or additions to documentation gateway Gateway runtime maintainer Maintainer-authored PR size: L

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants