Skip to main content

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-semantic for 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

mimir_client-5.0.3.tar.gz (15.8 kB view details)

Uploaded Source

Built Distribution

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

mimir_client-5.0.3-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file mimir_client-5.0.3.tar.gz.

File metadata

  • Download URL: mimir_client-5.0.3.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

Hashes for mimir_client-5.0.3.tar.gz
Algorithm Hash digest
SHA256 2aed1fbbdaf8cc5bb91d5f7fbbb3d2d006e7e637b588cd3ef860bae1aedc47f1
MD5 e7f683b69d8e099f493091ca4b8ee242
BLAKE2b-256 05c9c9c433625a2579a84137d6705128e12ade5416b069adb6e2fb4326599305

See more details on using hashes here.

File details

Details for the file mimir_client-5.0.3-py3-none-any.whl.

File metadata

  • Download URL: mimir_client-5.0.3-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

Hashes for mimir_client-5.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9ef02ad34b55f57e0f9354ec33f9c802bccae2164bab23853034f8bcf32824e4
MD5 7b86a9044551b37f80cfbc8ade158b93
BLAKE2b-256 19a9f4baf7262d1717245933164fd2b9ef2421df97630a84df47477251c9071b

See more details on using hashes here.

Supported by

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