All notable changes to MultiMind SDK will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Targets 0.3.0 — first release after the packaging modernization, lazy-import,
and test-stabilization passes.
- Guard proxy:
multimind serve— an OpenAI-compatible reverse proxy that adds PII guarding, budgets, and audit logging to any existing app (seedocs/guard-proxy.md) - AI inventory and chargeback:
multimind auditCLI (seedocs/ai-inventory.md) multimind scan-textCLI for scanning text for PII/sensitive data- Compliance MCP server (
python -m multimind.mcp_server) for Claude Desktop / Claude Code and other MCP clients (seedocs/mcp-server.md) - Framework adapters for LangChain, LlamaIndex, CrewAI, and the OpenAI SDK
(see
docs/integrations.md) - New extras:
mcp,langchain,llamaindex,crewai pyproject.tomlwith modular extras:rag,vector-stores,agents,memory,documents,finetune,finetune-gpu,compliance,gateway,dev,all(#41)- PEP 562 lazy imports —
from multimind import OpenAIModelno longer pulls intorch,transformers,chromadb, etc. on minimal installs - Helpful
ImportErrormessages from subpackages naming the right extras group to install (e.g.pip install multimind-sdk[rag]) multimind/_lazy.pyhelper module (import_optional,lazy_attr)tests/conftest.pywithmock_openai_key/mock_anthropic_keyfixtures,requires_torch/requires_faiss/requires_plotlyetc. skip decorators, and an auto-skip collection hook for tests marked@pytest.mark.requires_api_keywhen no keys are in the environmentplotly,dash, andpandasadded to[compliance]extra (powers the compliance visualization dashboards)optunaadded to[finetune]extra (was eagerly imported but undeclared)- Multi-job CI workflow (
.github/workflows/ci.yml):lint,test-core(Python 3.9 / 3.10 / 3.11 / 3.12 / 3.13 matrix),test-rag,test-compliance,test-finetune,test-gateway,test-full(coverage + 95% pass-rate gate) CHANGELOG.md(this file)- Re-exports for
SlackIntegrationHandlerandJiraIntegrationHandleronmultimind.integrations
- Minimum Python version raised to 3.9
- Version bumped to 0.3.0
- Complete README rewrite (660 → ~180 lines): single Quick Start, honest feature table, working code examples verified against the actual API surface
- Comprehensive
.gitignore(build artifacts, IDE files, coverage, database files, OS metadata, jupyter checkpoints, ruff/mypy caches) multimind/client/model_client.py:LSTMModelClient,RNNModelClient,GRUModelClientnow calltorch.load(weights_only=False)for PyTorch ≥ 2.6 compatibility (trusted-load is appropriate since users load their own training checkpoints)- Narrowed enforced Ruff rule set to
E, F, W, Iinpyproject.toml;UP/Nrules disabled until Pydantic v1@validatormethods can be migrated safely (seepyproject.tomlfor rationale) - Tooling configuration consolidated into
pyproject.toml([tool.pytest.ini_options],[tool.ruff],[tool.black],[tool.mypy]);pytest.iniand.flake8deleted - Moved root-level doc files to
docs/:README-llm.md→docs/llm-integration.mdllm-crawler-guide.md→docs/llm-crawler-guide.mdllm.txt→docs/llm.txtmultimind-sdk-metadata.json→docs/multimind-sdk-metadata.json
- Circular import in
multimind.compliance— removed redundantrun_compliancere-export frommultimind.compliance.__init__(the function remains available atmultimind.cli.compliance.run_compliance) - Test discovery:
pytest tests/now works regardless of invocation (pythonpath = ["."]added to pytest config); previously some tests requiredPYTHONPATH=$PWDas a CI workaround multimind/vector_store/typesense.py— nested same-quote f-string syntax error that prevented the module from loading on Python ≥ 3.11examples/mcp/__init__.py— removed imports of modules that no longer exist (.ci_cd_workflow,.code_review_workflow, etc.); package init is now lightweight, callers import specific examples directlymultimind/fine_tuning/qlora_trainer.py— removed unusedimport bitsandbytes as bnbso the module loads on macOS/ARM and any host without a GPUmultimind/ensemble/advanced.py— replaced 4 bareexcept:with explicitexcept Exception:(preserves keyboard-interrupt semantics)tests/test_import.py— three tests usedreturn Trueinstead ofassert; pytest 9 will error on this patterntests/test_retrieval.py— two async retrieval tests were missingawait, so the coroutines were silently dropped and the tests were trivially "passing" without exercising any codetests/test_model_client.py—DummyModelmoved to module scope sotorch.save/torch.loadround-trips work; shape corrected to[batch, seq_len, vocab]; three previously-skipped tests now runtests/test_document_loader.py— replacedMock(spec=BaseLLM)withAsyncMock(spec=BaseLLM)so the language-detect path (response.strip().lower()) gets a real string- 6,394 lint issues auto-fixed via
ruff check --fix+black(whitespace, import sorting, end-of-file newlines, redundantopen()modes, etc.) across 347 files inmultimind/
setup.pywas kept as a no-op shim in92294804for backward compatibility; further removal will follow once tooling has had time to settle onpyproject.tomlpytest.ini(replaced by[tool.pytest.ini_options]).flake8(replaced by Ruff configuration)requirements-base.txt,requirements-compliance.txt,requirements-dev.txt(replaced by[project.optional-dependencies])TEST_FIXES_COMPLETE.md(internal tracking — no longer needed in the repo root)[local]install extra (theollamaPyPI package was never used;multimind.models.ollamatalks to Ollama directly over HTTP viaaiohttp)
cryptography.zkpZeroKnowledgeProof falls back to a clearly-named_DummyZKPwith aUserWarningwhen the optional dependency is not installed. This is not a production-grade ZKP — install the real dependency or use a different compliance pathway for any guarantee that needs to survive audit.
- Model router error (#51)
- Streaming, memory, SQLAlchemy cleanup, and reliability issues across the SDK
- Refactored Unified API for stable Mixture-of-Experts execution with multi-modal routing and dynamic expert support
- Initial public release: multi-model chat, RAG, agents, basic compliance framework