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.
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
pip install multimind-sdkimport 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).
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] # EverythingOllama users: no extra needed β
multimind.models.ollamatalks to a running Ollama instance over HTTP. Justpip install multimind-sdkand point athttp://localhost:11434.
| 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
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.
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.jsonlfrom 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.
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
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.
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.
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 stringWorks with OpenAIModel, ClaudeModel, GeminiModel, MistralAIModel, GroqModel, and DeepSeekModel.
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
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/
- 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
We welcome contributions! See CONTRIBUTING.md for details.
git clone https://github.com/multimindlab/multimind-sdk.git
cd multimind-sdk
pip install -e ".[dev]"
pytestApache 2.0 β see LICENSE.
