Download
Install Mission LLM on your own infrastructure.
Mission LLM runs as one container on a lab workstation, a school server or a cluster, beside a local model runtime. Pick the method that fits your environment. The commands below come from the project's deployment documentation.
Public release images are not published yet. Build the image from source today, push it to your own registry, and replace REGISTRY in the commands below.
Platforms
- Available today
Server
A lab workstation, a server in your rack, or Kubernetes, Helm and OpenShift.
- In development
Windows
A native desktop app for Windows, in development.
- In development
macOS
A native desktop app for macOS, in development.
- In development
Linux
A native desktop app for Linux, in development.
Until the desktop apps ship, build and run Mission LLM in Docker on your own computer. Checksums and signatures will be published with the first release.
From one container to a cluster.
Install options
Build from source
Build the image yourself from the repository. This is the supported path today.
git clone https://github.com/jordan-pesavento/mission-llm.git mission-llm
cd mission-llm
docker build -f docker/Dockerfile -t mission-llm:latest . Then run it with the Docker command, using mission-llm:latest as the image name. Or build and run with Compose from the repository:
touch server/storage/missionllm.db
cd docker
cp .env.example .env
docker-compose up -d --buildThen open http://localhost:3001
- The build downloads packages from the internet. For a disconnected site, build on a connected machine and move the image across with your approved transfer process.
Docker
One container and one storage folder. Your data persists across image updates.
export STORAGE_LOCATION=$HOME/missionllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d --rm -p 3001:3001 \
--cap-add SYS_ADMIN \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
REGISTRY/mission-llm:latest $env:STORAGE_LOCATION="$HOME\Documents\missionllm"; `
If(!(Test-Path $env:STORAGE_LOCATION)) {New-Item $env:STORAGE_LOCATION -ItemType Directory}; `
If(!(Test-Path "$env:STORAGE_LOCATION\.env")) {New-Item "$env:STORAGE_LOCATION\.env" -ItemType File}; `
docker run -d --rm -p 3001:3001 `
--cap-add SYS_ADMIN `
-v "$env:STORAGE_LOCATION`:/app/server/storage" `
-v "$env:STORAGE_LOCATION\.env:/app/server/.env" `
-e STORAGE_DIR="/app/server/storage" `
REGISTRY/mission-llm:latest; Then open http://localhost:3001
- To turn off telemetry from the first start, add
-e DISABLE_TELEMETRY="true"before the image name. - Model runtime on the same machine: in Mission LLM, use
http://host.docker.internal:PORTinstead oflocalhost. On Linux, also add--add-host=to the run command.host.docker.internal: host-gateway
Docker Compose
The same container as a managed service that restarts automatically.
services:
missionllm:
image: REGISTRY/mission-llm:latest
container_name: missionllm
ports:
- "3001:3001"
cap_add:
- SYS_ADMIN
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- STORAGE_DIR=/app/server/storage
- JWT_SECRET=REPLACE_WITH_A_LONG_RANDOM_STRING
- DISABLE_TELEMETRY=true
- LLM_PROVIDER=ollama
- OLLAMA_BASE_PATH=http://host.docker.internal:11434
- OLLAMA_MODEL_PREF=llama3.1:8b
- OLLAMA_MODEL_TOKEN_LIMIT=4096
- EMBEDDING_ENGINE=ollama
- EMBEDDING_BASE_PATH=http://host.docker.internal:11434
- EMBEDDING_MODEL_PREF=nomic-embed-text:latest
- EMBEDDING_MODEL_MAX_CHUNK_LENGTH=8192
- VECTOR_DB=lancedb
- WHISPER_PROVIDER=local
- TTS_PROVIDER=native
- PASSWORDMINCHAR=8
volumes:
- missionllm_storage:/app/server/storage
restart: always
volumes:
missionllm_storage:
driver: local
driver_opts:
type: none
o: bind
device: /path/on/local/disk docker compose up -dThen open http://localhost:3001
- Any setting from
docker/.env.examplecan go in theenvironmentlist.
Kubernetes
An example manifest with a persistent volume, deployment, service and ingress.
- 1
Set
imageto the image in your registry. - 2
Replace the volume placeholder with storage that fits your cluster. The example uses an AWS EBS volume.
- 3
Apply it:
kubectl apply -f cloud-deployments/k8/ manifest.yaml
Helm
A chart with ConfigMap settings, Secret references, persistent storage, and Ingress and Gateway API support. Telemetry is off by default in the chart.
image:
repository: REGISTRY/mission-llm
tag: "latest"
service:
type: ClusterIP
port: 3001
envFrom:
- secretRef:
name: missionllm-secrets
persistentVolume:
size: 16Gicd cloud-deployments/helm/charts
helm install my-missionllm ./missionllm -f values-secret.yaml - Keep API keys and other secrets in Kubernetes Secrets. The chart's
configvalues render to a ConfigMap, which is not encrypted.
OpenShift
A dedicated image for restricted security context constraints, arbitrary user IDs and GID 0. The template is community-maintained.
docker build -f cloud-deployments/openshift/Dockerfile -t REGISTRY/missionllm:openshift .
docker push REGISTRY/missionllm:openshift
oc new-project missionllm
oc new-app REGISTRY/missionllm:openshift
oc expose svc/missionllm --port=3001
oc set env deployment/missionllm \
STORAGE_DIR=/app/server/storage \
JWT_SECRET=$(openssl rand -hex 32) Cloud templates
- AWS CloudFormation
- One EC2 instance running the container.
- Google Cloud Deployment Manager
- One Compute Engine VM.
- DigitalOcean Terraform
- One Droplet.
Each template pulls the image you name and serves HTTP on port 3001 without TLS. Add TLS and a password before you expose it.
For evaluation
A Hugging Face Spaces Dockerfile runs the image you name in a Space. Keep the Space private until you set a password or turn on multi-user mode.
Without containers
Running directly on Node.js 18 or later with Yarn 1.x is documented for reference only and is not a supported deployment method.
What the server needs.
System requirements
| Item | Requirement |
|---|---|
| Memory | 2 GB of RAM or more. |
| Disk | 10 GB minimum recommended. Storage grows with your documents, vectors and models. |
| CPU architecture | x86-64 (amd64) or ARM64. |
| Container runtime | Docker. Use 18.03 or later on Windows and macOS, or 20.10 or later on Linux, so the container can reach model runtimes on the host. |
| Language model | A local runtime such as Ollama or LM Studio, or an account with a cloud provider you approve. |
| Local model hardware | Depends on the model and runtime you choose. |
| Kubernetes installs | A cluster with persistent volume support. Helm 3 for the chart. |
After you install
Open the app
In a browser, open
http://localhost:3001or your server's address on port 3001.Choose a model
In onboarding, choose your model provider. Documents are embedded with the built-in embedder and stored in the built-in LanceDB store by default. You can change both in Settings.
Set up access
Choose “Just me” to set a password, or “My team” to turn on multi-user mode for a class or a team, before anyone else can reach the server.
Turn off telemetry
Confirm
DISABLE_TELEMETRYis set to"true"in the server environment.Add your documents
Create a workspace for each course, cohort or team and add its syllabus, readings, manuals or policies.