Skip to content

Architecture

System Overview

DataMeshOps is organized into four modular operational layers:

┌─────────────────────────────────────────────┐
│           Agent Integration Layer            │
│   DataMeshOps-Healer   DataMeshOps-Guard    │
├─────────────────────────────────────────────┤
│         Core Abstraction Layer               │
│  MCPClientManager  GraphTraverser           │
│  MutationEngine    LLMAdapter               │
│  DataHubBatchMutatorSkill                   │
├─────────────────────────────────────────────┤
│       DataHub Communication Layer            │
│  mcp-server-datahub (stdio/HTTP)            │
│  DataHub GMS REST/GraphQL endpoints         │
├─────────────────────────────────────────────┤
│         LLM Orchestration Layer              │
│  OpenAI GPT-4o / Gemini 2.5 Flash          │
│  Anthropic Claude (adapter pattern)         │
└─────────────────────────────────────────────┘

Core Modules

Module Purpose
datameshops_core/mcp_client.py Async MCP transport, exponential backoff, GMS GraphQL/REST
datameshops_core/graph_traverser.py Multi-hop lineage traversal, schema inspection, query history
datameshops_core/mutation_engine.py Atomic tag, property, description, and incident mutations
datameshops_core/llm_adapter.py Provider-agnostic LLM router (OpenAI, Gemini, Anthropic)
datameshops_core/batch_mutator.py DataHubBatchMutatorSkill — PR contribution to datahub-skills

LLM Provider Selection

Set via environment variable — no code changes needed:

# OpenAI (default)
export LLM_PROVIDER=openai
export OPENAI_API_KEY=sk-...

# Google Gemini
export LLM_PROVIDER=gemini
export GEMINI_API_KEY=...

# No key — deterministic mock fallback, zero cost
# (used for offline demo and judge testing)

Zero-Cost Judge Testing

Both agents include deterministic mock fallback paths. Without any API key or DataHub instance:

  • MCPClientManager returns realistic structured mock responses
  • LLMAdapter returns pre-computed SQL and audit reports
  • MutationEngine simulates all graph mutations and logs them
  • Full output is identical to live execution — minus network calls