# enowdev/enowx-rag architecture

> Architecture diagram of the GitHub repository enowdev/enowx-rag, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/enowdev/enowx-rag
- Repository: https://github.com/enowdev/enowx-rag

## Overview

enowx-rag is a per-project RAG memory server: agents index project context and retrieve it later, using MCP locally or through an HTTP daemon. The HTTP mode also provides a REST API, setup and migration workflows, live events, and an embedded dashboard. The graph reflects the documented capabilities and sampled call paths; some internal wiring for unsampled subsystems is not shown.

Main entry points: [`mcp-server/pkg/core/service.go`](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/service.go) (RAG service), [`mcp-server/pkg/httpapi/handlers.go`](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/handlers.go) (API handlers), [`mcp-server/pkg/rag/provider.go`](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/provider.go) (RAG provider), [`mcp-server/pkg/rag/qdrant.go`](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/qdrant.go) (Vector store adapters)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["Agent and UI interfaces"]
  node_mcp["MCP tools<br/>[main.go]"]
  node_http["HTTP API<br/>[server.go]"]
  node_handlers["API handlers<br/>[handlers.go]"]
  node_dashboard["Dashboard<br/>[App.tsx]"]
  node_webapi["Dashboard API client<br/>[api.ts]"]
end

subgraph group_service["Index and retrieval"]
  node_servicecore["RAG service<br/>[service.go]"]
  node_indexer["Project indexer<br/>[indexer.go]"]
end

subgraph group_providers["Embedding and storage"]
  node_ragbuild["Provider builder<br/>[ragbuild.go]"]
  node_provider["RAG provider<br/>[provider.go]"]
  node_reranker["Reranking<br/>[rerank.go]"]
  node_embedder["Embedding clients<br/>[tei.go]"]
  node_vectorstores["Vector store adapters<br/>[qdrant.go]"]
end

subgraph group_operations["Setup and migration"]
  node_setup["Setup workflow<br/>[setup.go]"]
  node_mcpclients["MCP client setup<br/>[mcpclients.go]"]
  node_migration["Store migration<br/>[migrate.go]"]
  node_cloudconnectors["Cloud connectors<br/>[connectors.go]"]
end

subgraph group_observability["Events and metrics"]
  node_eventbus["Event bus<br/>[service.go]"]
  node_sse["SSE stream<br/>[sse.go]"]
  node_metrics["Metrics service<br/>[metrics.go]"]
  node_sqlite[("SQLite metrics store<br/>[sqlite_metrics.go]")]
end

node_agent(("AI agent"))
node_browser(("Browser user"))
node_vectorservice[("Vector database")]
node_embeddingservice["Embedding service"]

node_agent -->|"calls tools"| node_mcp
node_agent -.->|"connects remotely"| node_http
node_mcp -->|"invokes operations"| node_servicecore
node_browser -->|"uses"| node_dashboard
node_dashboard -->|"requests data"| node_webapi
node_webapi -->|"calls REST API"| node_http
node_http -->|"dispatches routes"| node_handlers
node_handlers -->|"invokes operations"| node_servicecore
node_servicecore -->|"indexes directories"| node_indexer
node_indexer -->|"writes documents"| node_provider
node_servicecore -->|"searches and manages"| node_provider
node_servicecore -->|"reranks results"| node_reranker
node_ragbuild -->|"builds client"| node_embedder
node_ragbuild -->|"builds adapter"| node_vectorstores
node_vectorstores -->|"implements"| node_provider
node_provider -->|"embeds text"| node_embedder
node_vectorstores -->|"reads and writes"| node_vectorservice
node_embedder -->|"requests embeddings"| node_embeddingservice
node_handlers -->|"handles setup"| node_setup
node_setup -->|"installs client config"| node_mcpclients
node_handlers -->|"starts migration"| node_migration
node_migration -->|"builds destination"| node_ragbuild
node_migration -.->|"uses connectors"| node_cloudconnectors
node_servicecore -->|"publishes events"| node_eventbus
node_handlers -->|"serves event stream"| node_sse
node_sse -->|"subscribes"| node_eventbus
node_servicecore -->|"records query metrics"| node_metrics
node_metrics -->|"persists metrics"| node_sqlite

click node_mcp "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/cmd/mcp-server/main.go"
click node_http "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/server.go"
click node_handlers "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/handlers.go"
click node_dashboard "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/web/src/App.tsx"
click node_webapi "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/web/src/lib/api.ts"
click node_servicecore "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/service.go"
click node_indexer "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/indexer/indexer.go"
click node_ragbuild "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/ragbuild/ragbuild.go"
click node_provider "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/provider.go"
click node_reranker "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/rerank.go"
click node_embedder "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/tei.go"
click node_vectorstores "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/qdrant.go"
click node_setup "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/setup.go"
click node_mcpclients "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/mcpclients.go"
click node_migration "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/migrate/migrate.go"
click node_cloudconnectors "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/migrate/cloud/connectors.go"
click node_eventbus "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/service.go"
click node_sse "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/sse.go"
click node_metrics "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/metrics.go"
click node_sqlite "https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/sqlite_metrics.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mcp,node_http,node_handlers,node_dashboard,node_webapi,node_browser toneBlue
class node_servicecore,node_indexer,node_vectorservice toneAmber
class node_ragbuild,node_provider,node_reranker,node_embedder,node_vectorstores toneMint
class node_setup,node_mcpclients,node_migration,node_cloudconnectors toneRose
class node_eventbus,node_sse,node_metrics,node_sqlite,node_agent,node_embeddingservice toneIndigo
```

## Components

### Agent and UI interfaces

- [MCP tools](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/cmd/mcp-server/main.go): `mcp-server/cmd/mcp-server/main.go`
- [HTTP API](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/server.go): `mcp-server/pkg/httpapi/server.go`
- [API handlers](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/handlers.go): `mcp-server/pkg/httpapi/handlers.go`
- [Dashboard](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/web/src/App.tsx): `mcp-server/web/src/App.tsx`
- [Dashboard API client](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/web/src/lib/api.ts): `mcp-server/web/src/lib/api.ts`

### Index and retrieval

- [RAG service](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/service.go): `mcp-server/pkg/core/service.go`
- [Project indexer](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/indexer/indexer.go): `mcp-server/pkg/indexer/indexer.go`

### Embedding and storage

- [Provider builder](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/ragbuild/ragbuild.go): `mcp-server/pkg/ragbuild/ragbuild.go`
- [RAG provider](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/provider.go): `mcp-server/pkg/rag/provider.go`
- [Reranking](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/rerank.go): `mcp-server/pkg/rag/rerank.go`
- [Embedding clients](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/tei.go): `mcp-server/pkg/rag/tei.go`
- [Vector store adapters](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/rag/qdrant.go): `mcp-server/pkg/rag/qdrant.go`

### Setup and migration

- [Setup workflow](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/setup.go): `mcp-server/pkg/httpapi/setup.go`
- [MCP client setup](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/mcpclients.go): `mcp-server/pkg/httpapi/mcpclients.go`
- [Store migration](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/migrate/migrate.go): `mcp-server/pkg/migrate/migrate.go`
- [Cloud connectors](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/migrate/cloud/connectors.go): `mcp-server/pkg/migrate/cloud/connectors.go`

### Events and metrics

- [Event bus](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/service.go): `mcp-server/pkg/core/service.go`
- [SSE stream](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/httpapi/sse.go): `mcp-server/pkg/httpapi/sse.go`
- [Metrics service](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/metrics.go): `mcp-server/pkg/core/metrics.go`
- [SQLite metrics store](https://github.com/enowdev/enowx-rag/blob/main/mcp-server/pkg/core/sqlite_metrics.go): `mcp-server/pkg/core/sqlite_metrics.go`

### Other components

- **AI agent**
- **Browser user**
- **Vector database**
- **Embedding service**

## Connections

- AI agent → MCP tools: calls tools
- AI agent → HTTP API: connects remotely
- MCP tools → RAG service: invokes operations
- Browser user → Dashboard: uses
- Dashboard → Dashboard API client: requests data
- Dashboard API client → HTTP API: calls REST API
- HTTP API → API handlers: dispatches routes
- API handlers → RAG service: invokes operations
- RAG service → Project indexer: indexes directories
- Project indexer → RAG provider: writes documents
- RAG service → RAG provider: searches and manages
- RAG service → Reranking: reranks results
- Provider builder → Embedding clients: builds client
- Provider builder → Vector store adapters: builds adapter
- Vector store adapters → RAG provider: implements
- RAG provider → Embedding clients: embeds text
- Vector store adapters → Vector database: reads and writes
- Embedding clients → Embedding service: requests embeddings
- API handlers → Setup workflow: handles setup
- Setup workflow → MCP client setup: installs client config
- API handlers → Store migration: starts migration
- Store migration → Provider builder: builds destination
- Store migration → Cloud connectors: uses connectors
- RAG service → Event bus: publishes events
- API handlers → SSE stream: serves event stream
- SSE stream → Event bus: subscribes
- RAG service → Metrics service: records query metrics
- Metrics service → SQLite metrics store: persists metrics
