Air-gapped environments don't have to mean no AI. FlowSquad runs entirely on-premise with Ollama (Llama 3.1/Mistral) and ChromaDB — no data leaves your network.
For organisations operating under strict data classification requirements — government agencies, defence contractors, financial institutions, healthcare providers — the question of cloud LLM usage isn't a preference, it's a compliance boundary. The specific concerns vary by regulatory framework but cluster around several issues:
FlowSquad's on-premise deployment replaces every cloud component with a self-hosted equivalent:
Every component in this stack runs within your network perimeter. There are no outbound connections — not for telemetry, not for model updates, not for license validation. FlowSquad's on-premise licence is a static key validated against your deployment's hardware fingerprint at startup.
Key components:
nomic-embed-text via Ollama for embedding generation, eliminating the need for any external embedding API calls.FlowSquad's 10-step setup wizard includes a dedicated air-gapped configuration path. Below is the core configuration for an on-premise deployment:
# FlowSquad on-premise / air-gapped configuration
# config/flowsquad.yaml
deployment:
mode: "on_premise" # disables all external API calls
airgapped: true # enforces no-egress mode; any outbound call raises error
llm:
provider: "ollama"
ollama:
base_url: "http://localhost:11434"
default_model: "llama3.1:70b" # requires ~40GB VRAM
code_model: "codellama:34b" # optimised for code tasks
fast_model: "mistral:7b" # for quick scan / low-latency tasks
timeout_seconds: 120
num_gpu_layers: -1 # use all available GPU layers
embeddings:
provider: "ollama"
model: "nomic-embed-text" # local embedding model, no API cost
dimensions: 768
vectordb:
provider: "chromadb"
chromadb:
host: "localhost"
port: 8000
persist_directory: "/data/flowsquad/chromadb"
collection_prefix: "fs_prod_"
security:
encryption_at_rest: true
encryption_provider: "fernet" # AES-128 symmetric encryption
key_path: "/secrets/flowsquad.key" # store outside container
auth:
mfa_required: true
session_timeout_minutes: 30
audit_log_enabled: true
audit_log_path: "/var/log/flowsquad/audit.jsonl"
Local inference is slower than cloud inference, primarily because commercial cloud LLM providers operate at scale with purpose-built inference hardware. The tradeoffs are manageable with appropriate server provisioning:
| Task | Cloud GPT-4 Turbo | Local Llama 3.1 70B (A100) | Local Mistral 7B (A100) |
|---|---|---|---|
| Story decomposition (1 epic) | 4–8 seconds | 12–22 seconds | 5–9 seconds |
| AskProduct query | 2–5 seconds | 8–18 seconds | 3–7 seconds |
| Test generation (1 module) | 8–15 seconds | 25–45 seconds | 12–22 seconds |
| HLD generation | 15–30 seconds | 45–90 seconds | 20–40 seconds |
| Cost per 1M tokens | $10 | ~$0.08 (power + amortised hardware) | ~$0.02 |
For most development workflows, 8–22 second response times are entirely acceptable — the latency is comparable to waiting for a CI pipeline to start. Teams that require lower latency for interactive use (e.g., real-time AskProduct in IDE plugins) should provision Mistral 7B alongside Llama 3.1 70B and use FlowSquad's model routing to assign fast, lightweight queries to the smaller model.
FlowSquad's air-gapped deployment is actively used across several regulated sectors:
Minimum recommended for Llama 3.1 70B: a server with 2x NVIDIA A100 80GB GPUs (or equivalent, e.g., H100 40GB x2), 128GB RAM, and 2TB NVMe storage. For Mistral 7B as the primary model: a single A10 24GB GPU is sufficient. CPU-only inference is possible but not recommended for production — Mistral 7B on a modern 32-core CPU produces response times of 90–180 seconds, which is too slow for interactive use. FlowSquad's setup wizard includes a hardware compatibility checker.
Model weights are distributed via FlowSquad's offline model bundle — a set of pre-pulled Ollama model packages distributed on encrypted USB drives or via an internal artifact repository. The bundle includes all recommended models (Llama 3.1 70B, Mistral 7B, CodeLlama 34B, nomic-embed-text) with SHA-256 checksums for integrity verification. Model updates are released quarterly and delivered via the same offline bundle mechanism.
Yes. FlowSquad's Jira and Confluence integrations support both cloud (Atlassian Cloud) and on-premise (Jira Server / Jira Data Center, Confluence Server / Confluence Data Center) deployments. For air-gapped deployments, FlowSquad communicates with Jira and Confluence over your internal network using the standard REST API. No internet connectivity is required for these integrations.
Yes. FlowSquad's Semgrep-based security scanning is entirely local — the Semgrep binary and all rule sets are bundled with FlowSquad and run on your infrastructure. There are no calls to Semgrep's cloud API. Rule sets are updated during scheduled maintenance windows via the offline bundle mechanism. All 11 supported languages and all OWASP Top 10 rule categories are available in air-gapped mode.
FlowSquad uses Fernet symmetric encryption (AES-128) to encrypt specific sensitive fields at rest: LLM provider API keys, user credentials (salted + hashed separately), requirement documents marked as confidential, and scan findings classified as HIGH or CRITICAL. The encryption key is stored outside the application container at a path you specify during setup — typically a hardware security module (HSM) integration or a secrets management system (Vault, AWS Secrets Manager on private network). Key rotation is supported via the admin panel without requiring re-deployment.