On-premise deployment

Deploy in your environment. We never see your data.

LLMSec is not a SaaS. It runs entirely inside your own infrastructure — your VPC, your Kubernetes cluster, your air-gapped server. This is an architectural guarantee, not a contractual promise.

Data flow diagram

Your infrastructure (VPC / on-prem)

Operator (CLI)
→
LLMSec Scanner
→
Your LLM endpoint
Report PDF (stays here)
↓ no data crosses this line ↓

LLMSec infrastructure (marketing site only — we run nothing for you)

Deployment options

Recommended
Docker Compose

Single-host deployment. Easiest setup. Runs on any Linux server, macOS, or Windows with WSL2.

Coming soon
Helm Chart (Kubernetes)

Full Kubernetes deployment for EKS, GKE, AKS, OpenShift, and k3s. Includes NetworkPolicy and PodDisruptionBudget.

Enterprise
Air-Gapped Bundle

Offline installation for networks with no internet access. Docker images bundled as .tar + offline license verification.

Docker Compose — 60-second install

The fastest path to a working scanner. Suitable for a single security workstation or a dedicated scan server.

1

Run the installer

curl -L https://your-domain.com/install.sh | bash
cd llmsec/

Downloads docker-compose.yml and .env.example into a new ./llmsec directory.

2

Configure .env

cp .env.example .env
# Edit .env — set your license key and LLM API key:
LLMSEC_LICENSE_KEY=LIC-2026-0001-...
OPENAI_API_KEY=sk-...  # or your endpoint key

License keys are offline-verifiable. They are never sent to our servers.

3

Start LLMSec

docker compose up -d

Starts the scanner and optional local web UI on port 8080.

4

Run your first scan

llmsec scan --target openai:gpt-4o-mini --output json > results.json
# or filter to specific probe categories:
llmsec scan --target openai:gpt-4o-mini \
  --probes jailbreak,prompt_injection,toxicity \
  --output json > results.json

Approximately 30 probes × ~2s each ÷ 10 concurrency ≈ 6 seconds for a fast endpoint.

System requirements

Docker20.10+ or Docker Desktop
Docker Composev2.0+
CPU4 cores recommended (2 minimum)
RAM8 GB recommended (4 GB minimum)
Disk10 GB for base image; +12 GB if using local ML judges
OSLinux (any distro), macOS, Windows (WSL2)
NetworkOutbound to your LLM endpoints only. No inbound ports required for scanning.

Data-handling guarantees

These are architectural properties of the system — not privacy policy language. You can verify them by reading the source code.

Probe prompts are sent from your LLMSec instance to your LLM endpoint. They never leave your network.

Model responses are stored only in ~/.llmsec/scans/<scan_id>.db on your local disk.

Generated PDF reports are written locally. They are never uploaded anywhere.

No telemetry by default. You can explicitly opt-in to anonymized telemetry (helps us improve probes).

License verification happens entirely offline via Ed25519 signature. No license check ever contacts our servers.

Prompts and responses are never logged by the scanner by default — only hashed digests appear in the audit trail.

Common issues

401 Unauthorized from LLM endpoint

Check that $OPENAI_API_KEY (or your endpoint key) is set correctly in .env.

Connection refused to Ollama

Run `ollama serve` in a separate terminal. Ollama listens on localhost:11434.

All retry attempts failed

Network timeout or rate limit. Try --concurrency 3 --timeout 60.0.

No probes matched filter

Check the category name spelling: run `llmsec probe list` to see valid names.

License validation failed

Ensure LLMSEC_LICENSE_KEY is set in .env and that the system clock is accurate.

Pre-call checklist

Before a customer demo or first production scan:

Tests pass: uv run pytest packages/ -v
Lint clear: uv run ruff check packages/
Type check: uv run mypy packages/scanner/llmsec_scanner
CLI works: llmsec version
Probe list renders: llmsec probe list
Local scan works: llmsec scan --target ollama:tinyllama --output json

Need help with a specific deployment environment?