Skip to main content

MultiMind SDK

The compliance-first AI agent framework.
Multi-model AI with built-in GDPR, HIPAA & NIS2 support. Works with any model. Runs anywhere.

PyPI CI Python versions License Discord


New to AI? Start with the plain-language getting started guide — no coding required.

Why MultiMind?

Most AI frameworks assume you'll handle compliance yourself. MultiMind doesn't.

  • One API for all models — OpenAI, Anthropic Claude, Google Gemini, Mistral, Groq, DeepSeek, xAI, Together, Perplexity, Fireworks, Cerebras, 300+ models via OpenRouter, and local models via Ollama through a single async interface with streaming
  • Built-in compliance — a drop-in PII guard that detects, redacts, and audits sensitive data on every model call, plus GDPR & HIPAA policy modeling and compliance dashboards as a first-class module, not an afterthought
  • Govern the stack you already have — don't migrate off LangChain, LlamaIndex, or CrewAI; wrap them. Run multimind serve and point any OpenAI-compatible app at it to add PII redaction, budgets, and audit with one line changed
  • Governed by default — cost budgets that stop overspending before the call, hallucination detection with sentence-level evidence, and audit trails — each a one-line wrapper around any model
  • Switch models without losing knowledge — move a live conversation from GPT to Claude to a local model; the context travels with you
  • Adaptive routing — route requests across providers by cost, latency, or fallback strategy
  • RAG that works — FAISS and Chroma with document processing out of the box; 40+ client-backed vector stores including Pinecone, Qdrant, Weaviate, Milvus, pgvector, and LanceDB
  • Beyond transformers — run Mamba and RWKV models through the same interface
  • Runs anywhere — Cloud, on-prem, air-gapped with local models

Quick Start

pip install multimind-sdk
import asyncio
from multimind import OpenAIModel

async def main():
    model = OpenAIModel(model_name="gpt-4o-mini")
    response = await model.generate("Explain quantum computing simply")
    print(response)

asyncio.run(main())

Requires OPENAI_API_KEY in your environment. The same pattern works for ClaudeModel (Anthropic, ANTHROPIC_API_KEY), GeminiModel (Google, GEMINI_API_KEY), MistralAIModel (MISTRAL_API_KEY), GroqModel (GROQ_API_KEY), DeepSeekModel (DEEPSEEK_API_KEY), and OllamaModel (local models — Mistral, Llama, and anything else Ollama serves). Also: OpenRouterModel (OPENROUTER_API_KEY — 300+ models via one key), TogetherModel (TOGETHER_API_KEY), XAIModel (XAI_API_KEY), PerplexityModel (PERPLEXITY_API_KEY), FireworksModel (FIREWORKS_API_KEY), and CerebrasModel (CEREBRAS_API_KEY).

Install what you need

pip install multimind-sdk                # Core (incl. Ollama via HTTP, no extra needed)
pip install multimind-sdk[rag]           # + RAG & vector stores (FAISS, Chroma)
pip install multimind-sdk[agents]        # + Agent framework with memory
pip install multimind-sdk[compliance]    # + GDPR/HIPAA/NIS2 compliance + dashboards
pip install multimind-sdk[finetune]      # + LoRA/QLoRA fine-tuning (CPU)
pip install multimind-sdk[finetune-gpu]  # + 8-bit quantization (Linux/CUDA only)
pip install multimind-sdk[gateway]       # + FastAPI gateway server
pip install multimind-sdk[all]           # Everything

Ollama users: no extra needed — multimind.models.ollama talks to a running Ollama instance over HTTP. Just pip install multimind-sdk and point at http://localhost:11434.

Features

Feature Status Install Extra
Multi-model chat (OpenAI, Claude, Gemini, Groq, ...) Stable core
Streaming responses Stable core
Runtime PII guard (detect, redact, block, audit) Stable core
Cost tracking & budgets Stable core
Hallucination detection (grounding checks) Stable core
Mid-conversation model switching (ModelSession) Stable core
Compliance proxy (multimind serve, OpenAI-compat) Stable [gateway]
Governance dashboard UI (multimind dashboard) Stable [gateway]
Compliance evidence reports (md/HTML) Stable core
Framework adapters (LangChain, LlamaIndex, CrewAI) Stable [langchain] etc.
AI usage audit & cost chargeback (multimind audit) Stable core
Anthropic MCP compliance server Stable [mcp]
RAG pipeline (FAISS, Chroma) Stable [rag]
Context transfer between models Stable core
CLI interface Stable core
REST gateway with Swagger UI (/docs) Stable [gateway]
Docker deployment (lean ~300 MB image) Stable
Vision/multimodal input (images=) Stable core
AI Agents with native function-calling & memory Stable [agents]
Self-evolving agents (bounded exemplar learning) Stable [agents]
GDPR & HIPAA compliance (runtime enforcement) Stable [compliance]
Vector stores, core set (FAISS, Chroma, Pinecone, Qdrant, Weaviate, Milvus, ...) Stable [rag]/[vector-stores]
Self-orchestrating agents (bounded spawning) Beta [agents]
Non-transformer models (Mamba, RWKV) Beta [finetune]
Vector stores, extended set (26 client-backed, less battle-tested) Beta [vector-stores]
Fine-tuning (LoRA, real QLoRA) Beta [finetune]

Note: multimind.mcp is MultiMind's internal Model Composition Protocol — a workflow executor for chaining models. Anthropic's Model Context Protocol is supported separately via multimind.mcp_server (see docs/mcp-server.md).

Full status: FEATURES.md · Roadmap: ROADMAP.md

Examples

Snippets using await assume an async context — wrap them in asyncio.run(main()) as shown in the Quick Start. Full runnable versions live in examples/ and the cookbook.

Govern an app you already have — change one line

Start the compliance proxy, then point any OpenAI-compatible client (LangChain, LlamaIndex, the raw openai SDK, anything) at it:

multimind serve --port 8400 --upstream openai --block-on ssn,credit_card --budget 25.00 --audit-log audit.jsonl
from openai import OpenAI

# The ONLY change: base_url. Every call now gets PII redaction, budgets, and an audit trail.
client = OpenAI(base_url="http://localhost:8400/v1", api_key="unused-upstream-key-is-server-side")
client.chat.completions.create(model="gpt-4o-mini", messages=[{"role": "user", "content": "..."}])

Prefer to stay in code? Wrap your existing framework objects instead — see docs/integrations.md for LangChain, LlamaIndex, CrewAI, and OpenAI-SDK adapters.

Guard any model against PII leaks

from multimind import OpenAIModel
from multimind.compliance import guard

model = guard(
    OpenAIModel(model_name="gpt-4o-mini"),
    strategy="mask",                    # emails become [EMAIL], SSNs [SSN], ...
    block_on=("credit_card", "ssn"),    # refuse these outright
    audit_log="compliance_audit.jsonl", # types & counts only — never raw PII
)

response = await model.generate("Email jane.doe@corp.com about the invoice")
# The provider only ever saw: "Email [EMAIL] about the invoice"

Detects emails, phone numbers, SSNs, credit cards (Luhn-validated), IPs, IBANs, API keys (entropy-checked), and more — including across streaming chunk boundaries. Works with any model object that has generate/chat, so you can wrap non-MultiMind clients too. No extra dependencies. Runnable demo: examples/compliance/guarded_model.py

Multi-model chat

from multimind import OpenAIModel, ClaudeModel, GeminiModel, GroqModel

gpt = OpenAIModel(model_name="gpt-4o-mini")
claude = ClaudeModel(model_name="claude-3-5-sonnet-20241022")
gemini = GeminiModel(model_name="gemini-2.0-flash")
groq = GroqModel(model_name="llama-3.3-70b-versatile")

# Same interface, different providers
response = await gpt.generate("Hello!")
response = await claude.generate("Hello!")
response = await gemini.generate("Hello!")

MistralAIModel and DeepSeekModel work the same way.

Sync usage (no asyncio needed)

from multimind import OpenAIModel

model = OpenAIModel(model_name="gpt-4o-mini")
response = model.generate_sync("Explain quantum computing simply")

chat_sync and embeddings_sync are also available. Inside a running event loop, use the async methods instead.

Structured output

from pydantic import BaseModel
from multimind import OpenAIModel

class City(BaseModel):
    name: str
    population: int

model = OpenAIModel(model_name="gpt-4o-mini")
city = await model.generate("Largest city in France?", response_format=City)
print(city.name, city.population)  # a City instance, not a string

Works with OpenAIModel, ClaudeModel, GeminiModel, MistralAIModel, GroqModel, and DeepSeekModel.

RAG over your documents

from multimind.rag.fluent import RAGPipeline, RAGConfig
from multimind.vector_store.base import VectorStoreConfig, VectorStoreFactory
from multimind.core.router import Router

router = Router()  # register your providers with router.register_provider(...)

vector_store = VectorStoreFactory.create_store(
    "faiss",
    VectorStoreConfig.create_faiss_config(dimension=1536, metric="cosine"),
)

pipeline = RAGPipeline(router, RAGConfig(
    vector_store=vector_store,
    embedding_provider="openai",
    embedding_model="text-embedding-ada-002",
    generation_provider="openai",
    generation_model="gpt-4o-mini",
))

result = await (
    pipeline
    .load_documents(["Your documents here"])
    .query("What does this say?")
    .generate()
    .execute()
)
print(result.answer)

Full working example: examples/rag/fluent_rag_example.py

Agent with tools

from multimind import OpenAIModel
from multimind.agents import Agent
from multimind.agents.tools import CalculatorTool

agent = Agent(
    model=OpenAIModel(model_name="gpt-4o-mini"),
    tools=[CalculatorTool()],
)

# The task should mention the tool by name to route to it.
# Required parameters for the tool are passed as kwargs to agent.run().
response = await agent.run("Use the calculator", expression="42 * 17")
print(response)

More examples: examples/

Documentation

Contributing

We welcome contributions! See CONTRIBUTING.md for details.

git clone https://github.com/multimindlab/multimind-sdk.git
cd multimind-sdk
pip install -e ".[dev]"
pytest

License

Apache 2.0 — see LICENSE.

Discord · Twitter · Support

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

multimind_sdk-0.3.0.tar.gz (782.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

multimind_sdk-0.3.0-py3-none-any.whl (929.4 kB view details)

Uploaded Python 3

File details

Details for the file multimind_sdk-0.3.0.tar.gz.

File metadata

  • Download URL: multimind_sdk-0.3.0.tar.gz
  • Upload date:
  • Size: 782.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for multimind_sdk-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9481a28d7e958059db1fc17fcbc98f5446196429ea85acc13a89264754c36888
MD5 91d1016030b94778638c3336b21627d1
BLAKE2b-256 3dad406d0d85cfd2ce46bc35b57b7c7c31c553eaf540bf2322785afd69de2d49

See more details on using hashes here.

Provenance

The following attestation bundles were made for multimind_sdk-0.3.0.tar.gz:

Publisher: publish-develop.yml on multimindlab/multimind-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file multimind_sdk-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: multimind_sdk-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 929.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for multimind_sdk-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c865a8cf2638d3a6bde1f6a63ba05b680ab56f22256e32e0f82545bb6735311d
MD5 379e57e1f5f246fd2e47209982980358
BLAKE2b-256 673fcb0708f01205eb97623cca1a82b07f778d5895d482034bc0366e982e1467

See more details on using hashes here.

Provenance

The following attestation bundles were made for multimind_sdk-0.3.0-py3-none-any.whl:

Publisher: publish-develop.yml on multimindlab/multimind-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page