The compliance-first AI agent framework.
Multi-model AI with built-in GDPR, HIPAA & NIS2 support. Works with any model. Runs anywhere.
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 serveand 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_KEYin your environment. The same pattern works forClaudeModel(Anthropic,ANTHROPIC_API_KEY),GeminiModel(Google,GEMINI_API_KEY),MistralAIModel(MISTRAL_API_KEY),GroqModel(GROQ_API_KEY),DeepSeekModel(DEEPSEEK_API_KEY), andOllamaModel(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), andCerebrasModel(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.ollamatalks to a running Ollama instance over HTTP. Justpip install multimind-sdkand point athttp://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.mcpis MultiMind's internal Model Composition Protocol — a workflow executor for chaining models. Anthropic's Model Context Protocol is supported separately viamultimind.mcp_server(see docs/mcp-server.md).
Full status: FEATURES.md · Roadmap: ROADMAP.md
Examples
Snippets using
awaitassume an async context — wrap them inasyncio.run(main())as shown in the Quick Start. Full runnable versions live inexamples/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
- Docs index — everything in one place
- Quickstart — guarded, cost-tracked model calls in 5 minutes
- Cookbook — task-oriented recipes (providers, structured output, budgets, hallucination checks, gateway, docker)
- Getting started without writing code — for analysts, compliance officers, and PMs
- Deployment Guide — Docker and docker compose, including a fully local stack
- Compliance Guide
- API Reference
- Architecture
- Contributing
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9481a28d7e958059db1fc17fcbc98f5446196429ea85acc13a89264754c36888
|
|
| MD5 |
91d1016030b94778638c3336b21627d1
|
|
| BLAKE2b-256 |
3dad406d0d85cfd2ce46bc35b57b7c7c31c553eaf540bf2322785afd69de2d49
|
Provenance
The following attestation bundles were made for multimind_sdk-0.3.0.tar.gz:
Publisher:
publish-develop.yml on multimindlab/multimind-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
multimind_sdk-0.3.0.tar.gz -
Subject digest:
9481a28d7e958059db1fc17fcbc98f5446196429ea85acc13a89264754c36888 - Sigstore transparency entry: 2531974177
- Sigstore integration time:
-
Permalink:
multimindlab/multimind-sdk@87d9b8329eb058b44f4e696a392de817cfe68470 -
Branch / Tag:
refs/heads/develop - Owner: https://github.com/multimindlab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-develop.yml@87d9b8329eb058b44f4e696a392de817cfe68470 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c865a8cf2638d3a6bde1f6a63ba05b680ab56f22256e32e0f82545bb6735311d
|
|
| MD5 |
379e57e1f5f246fd2e47209982980358
|
|
| BLAKE2b-256 |
673fcb0708f01205eb97623cca1a82b07f778d5895d482034bc0366e982e1467
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
multimind_sdk-0.3.0-py3-none-any.whl -
Subject digest:
c865a8cf2638d3a6bde1f6a63ba05b680ab56f22256e32e0f82545bb6735311d - Sigstore transparency entry: 2531974746
- Sigstore integration time:
-
Permalink:
multimindlab/multimind-sdk@87d9b8329eb058b44f4e696a392de817cfe68470 -
Branch / Tag:
refs/heads/develop - Owner: https://github.com/multimindlab
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-develop.yml@87d9b8329eb058b44f4e696a392de817cfe68470 -
Trigger Event:
push
-
Statement type: