Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Self-hosting the server

Cortadel runs as one container, one port. The ASP.NET Core process serves the REST API, the MCP endpoint, Swagger, and the React dashboard on :3001. It needs two things reachable from the container:

  1. a graph database — FalkorDB or Memgraph, and
  2. an embedding provider — Ollama, LM Studio, or Azure OpenAI (an external endpoint is required; there is no built-in embedding model).

FalkorDB is the recommended default — it’s fast and starts instantly.

docker-compose.yml
services:
falkordb:
image: falkordb/falkordb:latest
ports:
- "6379:6379"
- "33000:3000" # FalkorDB browser UI
volumes:
- falkordb-data:/data
cortadel:
image: ghcr.io/cortadel/cortadel:latest
depends_on: [falkordb]
ports:
- "3001:3001"
environment:
MEMFORGE_Database__Provider: falkordb
MEMFORGE_FalkorDb__Host: falkordb
MEMFORGE_FalkorDb__Port: "6379"
# Embeddings — point at your provider (example: a local Ollama)
MEMFORGE_Embedding__Provider: ollama
MEMFORGE_Embedding__Endpoint: http://host.docker.internal:11434
MEMFORGE_Embedding__Model: nomic-embed-text
# Optional: enable auth (leave empty to run open on a trusted network)
MEMFORGE_Auth__Secret: ""
volumes:
falkordb-data:
3001/api/v1
docker compose up
# dashboard http://localhost:3001
# MCP http://localhost:3001/mcp/{client}/{userId}
memgraph:
image: memgraph/memgraph-mage:latest
command: ["--experimental-enabled=text-search"] # required for BM25
ports: ["7687:7687"]
environment:
MEMFORGE_Database__Provider: memgraph
MEMFORGE_Memgraph__Host: memgraph
MEMFORGE_Memgraph__Port: "7687"

Config binds from environment variables prefixed MEMFORGE_, using __ (double underscore) as the section separator — so MEMFORGE_FalkorDb__Host sets FalkorDb:Host.

Variable Purpose
MEMFORGE_Database__Provider falkordb or memgraph
MEMFORGE_FalkorDb__Host / __Port FalkorDB connection
MEMFORGE_Memgraph__Host / __Port Memgraph connection
MEMFORGE_Embedding__Provider ollama, lmstudio, or azure
MEMFORGE_Embedding__Endpoint Embedding provider base URL
MEMFORGE_Embedding__Model Embedding model name
MEMFORGE_Llm__Provider azure or lmstudio (LLM for extraction/dedup)
MEMFORGE_Auth__Secret Enable auth; empty = open
Terminal window
curl http://localhost:3001/api/health

Returns overall status plus per-dependency checks (database, embeddings, vector indexes). Use it as your container health probe.

The vector index dimension is fixed at first run. If you switch to an embedding model with a different dimension, startup hard-fails on a dimension guard. Re-embed everything via the maintenance endpoint, or override the guard for a deliberate migration:

POST /api/v1/debug/reindex-vectors # rebuild vectors with the new model
MEMFORGE_Embedding__SkipDimensionGuard=true # boot past the guard on purpose

Self-hosting is free for personal and development use. Business use requires a commercial license. Managed Cortadel Cloud removes the ops entirely. See cortadel.ai.