Download

Install Mission LLM on your own infrastructure.

Mission LLM runs as a container. 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

    Docker, build from source

    A workstation, a server in your rack, or Kubernetes, Helm and OpenShift.

  • Coming soon

    Windows

    Desktop app

    A native desktop app for Windows, in development.

  • Coming soon

    macOS

    Desktop app

    A native desktop app for macOS, in development.

  • Coming soon

    Linux

    Desktop app

    A native desktop app for Linux, in development.

Until the desktop apps ship, build and run Mission LLM in Docker on your workstation. 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.

Terminal
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:

Terminal
touch server/storage/missionllm.db
cd docker
cp .env.example .env
docker-compose up -d --build

Then 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.

Linux or macOS
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
Windows (PowerShell)
$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:PORT instead of localhost. On Linux, also add --add-host=host.docker.internal:host-gateway to the run command.

Docker Compose

The same container as a managed service that restarts automatically.

docker-compose.yml
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
Terminal
docker compose up -d

Then open http://localhost:3001

  • Any setting from docker/.env.example can go in the environment list.

Kubernetes

An example manifest with a persistent volume, deployment, service and ingress.

  1. 1

    Set image to the image in your registry.

  2. 2

    Replace the volume placeholder with storage that fits your cluster. The example uses an AWS EBS volume.

  3. 3

    Apply it:

    Terminal
    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.

values-secret.yaml
image:
  repository: REGISTRY/mission-llm
  tag: "latest"
 
service:
  type: ClusterIP
  port: 3001
 
envFrom:
  - secretRef:
      name: missionllm-secrets
 
persistentVolume:
  size: 16Gi
Terminal
cd 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 config values 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.

Terminal
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.
Hugging Face Spaces
A Dockerfile for evaluation in a Space.

Each template pulls the image you name and serves HTTP on port 3001 without TLS. Add TLS and a password before you expose it.

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

ItemRequirement
Memory2 GB of RAM or more.
Disk10 GB minimum recommended. Storage grows with your documents, vectors and models.
CPU architecturex86-64 (amd64) or ARM64.
Container runtimeDocker. 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 modelA local runtime such as Ollama or LM Studio, or an account with a cloud provider you approve.
Local model hardwareDepends on the model and runtime you choose.
Kubernetes installsA cluster with persistent volume support. Helm 3 for the chart.

After you install

  1. Open the app

    Open http://localhost:3001, or your server's address on port 3001.

  2. 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.

  3. Set up access

    Choose “Just me” to set a password, or “My team” to turn on multi-user mode, before anyone else can reach the server.

  4. Turn off telemetry

    Confirm DISABLE_TELEMETRY="true" is set in the server environment.

  5. Add documents

    Create a workspace and add your documents.