Repository navigation
Choosing an AI provider
Open Settings → AI provider, pick one, and press Test connection:
- Local model: Ollama or llama.cpp on your own hardware. Private and free, but slower; see below for setup and model sizes.
- LM Studio: a model you run in LM Studio, on this computer or your network; see below.
- OpenAI-compatible: OpenAI itself or any server that speaks its API (OpenRouter, vLLM and others). Enter its address, your API key and the model.
- Anthropic: Claude models with your own API key.
- Mistral: Mistral's models with your own API key, from Mistral's console. The model list shows the ones your plan includes. Mistral sets limits per workspace: if Test connection says the key can make 0 requests a minute, check the workspace's plan there.
API keys are stored encrypted with DOSSIER_SECRET and never sent back to the browser. Never invent experience (on by default) keeps drafts to facts from your profile and flags anything it can't find there.
You can also set the provider with the DOSSIER_AI_* environment variables; a choice saved in Settings wins.
With a local model, your profile, postings and documents never leave your server. The Compose file can run Ollama next to Dossier. Switch it on, start it, and pull a model:
echo "COMPOSE_PROFILES=ai" >> .env
docker compose up -d
docker compose exec ollama ollama pull qwen2.5:7bThen, in Settings → AI provider → Local model, set the server address to http://ollama:11434, pick the model and press Test connection. Or set DOSSIER_AI_PROVIDER=local, DOSSIER_AI_URL=http://ollama:11434 and DOSSIER_AI_MODEL=qwen2.5:7b in .env.
On CapRover, Coolify or Dokploy, the guide for it shows how to run Ollama there: see Self-host on a server.
Which model: qwen2.5:7b is a good start: a 4.7 GB download that needs about 6 GB of memory with Dossier's 16k-token context. On a smaller server, qwen2.5:3b (2 GB, about 3 GB of memory) works, with plainer writing. These are suggestions, not yet benchmarked. On a CPU, reading a posting takes a minute or two and a whole new application several minutes, so the local timeout is 5 minutes per request (DOSSIER_AI_TIMEOUT_SECONDS); 4 or more cores help, a GPU much more.
Ollama elsewhere: on another machine in your network, use http://<its address>:11434, and start Ollama there with OLLAMA_HOST=0.0.0.0 so it listens beyond localhost. For Ollama installed on the same server outside Docker, use http://host.docker.internal:11434, which compose.yml points at the server; Ollama then has to listen beyond localhost too, so make sure your firewall keeps port 11434 closed to the internet. Inside a container, localhost is the container itself, never the server.
Start the server in LM Studio's Developer tab (0.4 or later; it listens on port 1234). There's no need to load a model first. In Settings → AI provider → LM Studio, the address http://host.docker.internal:1234 is LM Studio on the computer Dossier's Docker runs on; for one on another machine, use http://<its address>:1234. If Test connection can't reach it, turn on Serve on Local Network in LM Studio's server settings, and keep port 1234 closed to the internet. The API token is only needed if you've turned on authentication there.
Pick a model from the list; embedding models aren't offered. When it isn't loaded, Dossier loads it with 16,384 tokens of context (or the model's maximum, if that's less), and it stays loaded until you eject it in LM Studio. If you've loaded it yourself with less context, Dossier says so instead of reloading it. Reading postings runs with the model's thinking off; writing leaves it room to think first.
On your own computer
On a server
After installing