All-in-one .NET RAG platform — native MCP server, hybrid retrieval, Blazor admin UI.
149
![]()
All-in-one standalone agentic-RAG platform in a single container (.NET 10 / Kestrel): Blazor WebAssembly admin UI + REST management API + native MCP server (Streamable HTTP + legacy SSE). Point your AI agents and apps at the knowledge you already have — Obsidian vaults, web pages, documents, APIs, SQL databases, cloud storage, RSS, YouTube and Git repositories.
docker pull afonsoft/knowledgerag
docker run -d --name knowledgerag \
-p 5000:8080 \
-v knowledgerag-data:/data \
-v vault:/vaults/default -e Vault__Path=/vaults/default \
afonsoft/knowledgerag
http://localhost:5000 — sign in admin / 123qwe (forced password change on first login; override the seed via Auth__AdminInitialPassword).http://localhost:5000/mcp (Streamable HTTP) or /mcp/sse (legacy SSE) — Authorization: Bearer aft_* (generate keys at /api-keys in the UI).GET /health/ready (already wired as the image HEALTHCHECK).The same image is also on GHCR: docker pull ghcr.io/afonsoft/knowledgerag.
search_knowledge, ask_knowledge, agent_chat, read_document, write_knowledge/write_note, GraphRAG tools (find_dependencies, find_dependents, analyze_impact, temporal search_graph_*), plus upstream proxies (DeepWiki, Firecrawl, Tavily, Context7) and arbitrary McpProxy sources.| Item | Value |
|---|---|
| HTTP port | 8080 (container) — map with -p <host>:8080 |
| Data volume | /data — SQLite catalog/vector DB + uploads |
| Vault | /vaults/default — default Obsidian vault; seeded as a source when Vault__Path points there |
| Logs | /app/logs — optional mount; Serilog file sink, daily rolling, 14-day retention |
| User | non-root app (uid 1654) — chown bind-mounted host dirs accordingly |
All ASP.NET Core settings accept Section__Key env vars. Frequently used:
| Variable | Default | Purpose |
|---|---|---|
Embeddings__Provider | deterministic | deterministic / ollama / openai / onnx / voyage / cohere |
Embeddings__Endpoint | — | e.g. http://host.docker.internal:11434 for host Ollama |
Embeddings__Model | — | e.g. nomic-embed-text |
Chat__Provider | none | ollama / openai — enables server-side answer synthesis & agent loop |
Chat__Endpoint / Chat__Model / Chat__ApiKey | — | LLM used by ask_knowledge / agent_chat |
Database__Provider | auto | auto / sqlite / postgres — auto falls back to SQLite |
VectorStore__ConnectionString | — | pgvector target, e.g. Host=host.docker.internal;Database=rag_db;... |
Cache__Provider | memory | memory / redis (distributed L2 cache) |
Mcp__SessionMode | StatefulForInitializeClients | hybrid MCP sessions; Stateless for spec 2026-07-28-only setups |
Auth__AdminInitialPassword | 123qwe | seed for first-boot admin (forced change on login) |
Vault__Path | — | when set and no ObsidianVault source exists, seeds one at this path — pair with -v vault:/vaults/default |
Vault__Name | Default Vault | display name of the seeded vault source |
Reaching services on the Docker host (Ollama, Postgres, Redis): add --add-host=host.docker.internal:host-gateway on docker run.
services:
knowledgerag:
image: afonsoft/knowledgerag:latest
ports: ["5000:8080"]
volumes: ["./data:/data", "./logs:/app/logs", "vault:/vaults/default"]
environment:
Vault__Path: /vaults/default
Chat__Provider: ollama
Chat__Endpoint: http://host.docker.internal:11434
Chat__Model: llama3.1
Embeddings__Provider: ollama
Embeddings__Endpoint: http://host.docker.internal:11434
Embeddings__Model: nomic-embed-text
extra_hosts: ["host.docker.internal:host-gateway"]
restart: unless-stopped
volumes:
vault:
name: vault
./dataand./logsmust be writable by uid 1654:mkdir -p data logs && chown -R 1654:1654 data logs.
latest — most recent stable releaseX.Y.Z — immutable release tags (e.g. 0.1.1), published on every vX.Y.Z Git tagContent type
Image
Digest
sha256:9bcd72203…
Size
149.5 MB
Last updated
17 days ago
docker pull afonsoft/knowledgerag