Self-hosting NVEIL¶
Run the complete NVEIL platform on your own infrastructure with Docker. Your raw data stays on your machines; only its shape (column names, types, aggregate statistics) is ever sent to the model.
This is the Community Edition, free and open under the AGPL. Prefer not to manage a server? The same platform is available hosted at nveil.com (freemium).
Requirements¶
- Docker + Docker Compose (Docker Desktop on macOS/Windows, or Docker Engine on Linux).
- One LLM provider: either a commercial API key (Gemini, OpenAI, Anthropic, or Mistral) or a local model (Ollama, llama.cpp, or any OpenAI-compatible endpoint).
- ~4 GB RAM free and a few GB of disk for the images.
Quick start¶
Everything runs from one Compose file that pulls prebuilt images, nothing to build.
1. Download docker-compose.yaml into an empty folder.
2. Run the setup wizard and open http://localhost:3000 to configure; it writes your .env (database passwords, secrets, and your LLM provider):
docker compose up setup
3. Pull the images and launch:
docker compose up -d
Open https://localhost:8000 (accept the self-signed certificate warning) and start chatting with your data.
Pin a version
The Compose file defaults to a known-good release. To pin a specific one, set NVEIL_VERSION in your .env.
Configuration¶
The setup wizard is the recommended way to configure NVEIL; it generates secure secrets for you and writes a valid .env. You can also edit .env by hand. Key settings:
| Variable | Purpose |
|---|---|
POSTGRES_PASSWORD, AI_DB_PASSWORD |
Database passwords (the wizard generates these). |
SECRET_KEY, APP_ENCRYPTION_KEY |
Auth signing key and at-rest encryption key (generated). |
| LLM provider keys | At least one (see below). |
DATA_PATH |
Where your projects/data live (default: a Docker volume). |
COMPOSE_PROFILES |
Set to core by the wizard so a bare docker compose up starts the stack. |
LLM providers (bring your own model)¶
Set at least one provider in .env. At startup the AI service tries them in order and uses the first that responds:
Google → OpenAI → Anthropic → Mistral → Ollama → llama.cpp → OpenAI-compatible
- Commercial:
GOOGLE_API_KEY,OPENAI_API_KEY,ANTHROPIC_API_KEY,MISTRAL_API_KEY. - Local / self-hosted:
OLLAMA_BASE_URL+OLLAMA_MODEL,LLAMACPP_BASE_URL+LLAMACPP_MODEL, orOPENAI_COMPAT_BASE_URL+OPENAI_COMPAT_API_KEY+OPENAI_COMPAT_MODEL.
Your data never leaves your infrastructure; only metadata is sent to whichever model you configure.
Your data & projects¶
Your projects live in the data volume mounted at /root/DIVE (controlled by DATA_PATH, a Docker-managed volume by default). The PostgreSQL database (accounts, files, dashboards) lives in the postgres-data volume. Both persist across restarts: docker compose down keeps them; only docker compose down -v deletes them.
Updating¶
Pull the latest images and recreate the containers:
docker compose pull
docker compose up -d
Database migrations run automatically on startup. To move between specific releases, set NVEIL_VERSION in .env first.
Developer setup¶
Want to debug, turn on LLM tracing, or build the images yourself? Clone the repo and use docker-compose.dev.yml; it builds from source with live reload and TEST mode (debug routes at /docs):
git clone https://github.com/nveil-ai/nveil.git
cd nveil
docker compose -f docker-compose.dev.yml up setup # configure → localhost:3000
docker compose -f docker-compose.dev.yml --profile core up --build -d # build & run → localhost:8000
Optional LLM tracing with the bundled Langfuse (→ http://localhost:3030):
docker compose -f docker-compose.dev.yml --profile core --profile tracing up -d
Architecture¶
A NVEIL deployment is a handful of services on one Docker network:
| Service | Role | Port |
|---|---|---|
| server | API + web UI; orchestrates visualization containers | 8000 |
| ai | LLM processing (chat, analysis, pipeline generation) | 8100 |
| file | Uploads, file processing, storage | 8200 |
| postgres | Database (accounts, files, dashboards, state) | 5432 |
| viz | 3D/scientific rendering, spawned on demand by the server | n/a |
TLS certificates are generated automatically on first start (unique per install). The server spawns visualization containers as needed from the viz image.
Troubleshooting¶
- Browser warns about the certificate. Expected: NVEIL generates a self-signed certificate for
localhost. Accept it to proceed. - A port is already in use (5432 / 8000 / 8100 / 8200): stop the conflicting service, or change the published ports in your Compose file.
- "No LLM provider" at startup. Make sure at least one provider is set in
.env(a key, or a local endpoint and model). - Start fresh.
docker compose downthendocker compose up -d. ⚠️ Add-vonly if you want to wipe the database and projects.
Need help? Join the Discord or open a GitHub Discussion.