Official Python client for the Mímir Knowledge Graph API
Project description
mimir-client
Official Python client for the Mímir Knowledge Graph API.
Installation
pip install mimir-client
Quick Start
import asyncio
from mimir_client import MimirClient
async def main():
async with MimirClient(api_url="http://localhost:38000", tenant_id=1) as client:
# Health check
healthy = await client.is_healthy()
print(f"API healthy: {healthy}")
# Create an artifact
artifact = await client.create_artifact(
"document",
title="Architecture Overview",
content="This document describes the system architecture.",
metadata={"author": "team-lead"},
)
print(f"Created: {artifact.id} — {artifact.title}")
# Search
results = await client.search(query="architecture")
for r in results.results:
print(f" [{r.score:.2f}] {r.artifact.title}")
asyncio.run(main())
Configuration
Direct instantiation
client = MimirClient(
api_url="http://localhost:38000",
tenant_id=1,
timeout=30.0,
)
From environment variables
from mimir_client import MimirClient, get_settings
# Reads MIMIR_API_URL, MIMIR_TENANT_ID, MIMIR_TIMEOUT from env / .env
settings = get_settings()
client = MimirClient.from_settings(settings)
| Environment Variable | Default | Description |
|---|---|---|
MIMIR_API_URL |
http://localhost:38000 |
Mímir API base URL |
MIMIR_TENANT_ID |
None |
Default tenant ID |
MIMIR_TIMEOUT |
30.0 |
Request timeout (seconds) |
API Coverage
All Mímir v5 REST endpoints are covered:
| Resource | Methods |
|---|---|
| Tenants | create_tenant, get_tenant, get_tenant_by_shortname, list_tenants, update_tenant, delete_tenant, ensure_tenant |
| Artifact Types | create_artifact_type, get_artifact_type, list_artifact_types, update_artifact_type, ensure_artifact_type |
| Artifacts | create_artifact, get_artifact, list_artifacts, get_children |
| Relation Types | create_relation_type, get_relation_type, list_relation_types, update_relation_type, get_inverse_relation_type, ensure_relation_type |
| Relations | create_relation, get_relation, list_relations, get_artifact_relations |
| Embedding Types | create_embedding_type, get_embedding_type, list_embedding_types, delete_embedding_type, ensure_embedding_type |
| Embeddings | create_embedding, get_embedding, list_embeddings |
| Search | search (unified), search_fulltext |
| Context | get_context |
| Provenance | list_provenance_by_artifact, list_provenance_by_source |
| Health | health, is_healthy |
Typed Responses
All methods return Pydantic models with full type information:
artifact = await client.create_artifact("document", title="Test")
print(artifact.id) # UUID
print(artifact.title) # str | None
print(artifact.created_at) # datetime
Error Handling
Errors are mapped to typed exceptions:
from mimir_client import MimirNotFoundError, MimirConflictError
try:
artifact = await client.get_artifact("nonexistent-uuid")
except MimirNotFoundError:
print("Artifact not found")
try:
await client.create_relation(src_id, tgt_id, "derived_from")
except MimirConflictError:
print("Relation already exists")
| HTTP Status | Exception |
|---|---|
| Connection failure | MimirConnectionError |
| 404 | MimirNotFoundError |
| 409 | MimirConflictError |
| 422 | MimirValidationError |
| 5xx | MimirServerError |
| Other 4xx | MimirError |
Convenience Methods
ensure_* methods are idempotent — they return existing resources or create new ones:
# Safe to call repeatedly — no-op if already exists
tenant = await client.ensure_tenant("dev", "Development")
await client.ensure_artifact_type("document", "Document", category="content")
await client.ensure_relation_type("derived_from", "Derived From", inverse_code="source_of")
await client.ensure_embedding_type("nomic", provider="ollama", dimensions=768)
Scope
This client is a thin HTTP wrapper. It does NOT include:
- Embedding generation (use
mimir-semanticfor Ollama/OpenAI/Voyage integration) - Token budgeting or RAG policies
- Graph traversal algorithms
- Batch operations
Requirements
- Python >= 3.11
- httpx
- pydantic >= 2.0
- pydantic-settings >= 2.0
License
MIT
Project details
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 mimir_client-5.0.2.tar.gz.
File metadata
- Download URL: mimir_client-5.0.2.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a06be4b3060d90a7b9562460bc2be933f38295cdfe8e4fca0c05c0bb09a2709
|
|
| MD5 |
f9a0b48213d952e27afcd4ddf7173833
|
|
| BLAKE2b-256 |
2782a04cab4a9b919f08cad6211863441a5c93c7452ef81acf4866c35766b72d
|
File details
Details for the file mimir_client-5.0.2-py3-none-any.whl.
File metadata
- Download URL: mimir_client-5.0.2-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c0ffc0116517e8d6f8e71498de2a593b2a08e678ce95695a2fc32eb7007d59a
|
|
| MD5 |
67e338b8f42e4dcf7fdff8be06226dea
|
|
| BLAKE2b-256 |
1e7497eb6e2046d8c83b6f2a478be0cfbc7fbb6ffc23a10ad40def46868082e1
|