Download:

Installation Guide

Step-by-step deployment instructions for every supported platform — Windows, Linux, Docker, and Kubernetes. Gets FlowSquad running; the Setup Guide covers first-run configuration.

1. Overview & Prerequisites

FlowSquad ships as a fully compiled, self-contained binary for each supported platform. No Python interpreter, virtual environment, or dependency installation is required on the target host. All installers are available for download from the official release page:

ℹ
Official download location
All FlowSquad installers are published at:
https://github.com/flowsquad-ai/Flowsquad/releases/
Always download from this location to ensure you receive a signed, authentic release.

System Requirements

ComponentMinimumRecommended (Production)
CPU4 cores8+ cores
RAM8 GB16+ GB
Disk20 GB SSD100+ GB SSD
Operating SystemWindows 10 / Ubuntu 20.04Windows Server 2019+ / RHEL 8+ / Ubuntu 22.04+
Application DatabasePostgreSQL 14+ or MySQL 8.0+PostgreSQL 16+ (dedicated server)
NetworkPort 5000 or 443 reachableHTTPS on port 443 via reverse proxy or direct

License File

FlowSquad ships with a bundled evaluation license that activates automatically on first run — no license file is needed to get started. The evaluation license allows 1 product for 30 days with full feature access.

To use multiple products or for production deployments, an enterprise license is required. Contact support@flowsquad.ai to obtain one. Enterprise licenses are applied through Admin Panel → License Management after installation.


2. Installation Options

FlowSquad provides five ready-to-deploy installer packages. Select the package that matches your target platform and deployment model.

Package Platform Download File Best For
Windows Portable Windows 10 / 11 / Server FlowSquad-v2.0-portable.zip Quick start, single-user, lab environments
Windows Installer Windows 10 / 11 / Server 2016+ FlowSquad-Setup-v2.0.exe Enterprise Windows environments, multi-user deployments
Linux — Standalone Ubuntu 20.04+ / RHEL 8+ / Debian 11+ FlowSquad-Linux-Standalone-v2.0.tar.gz Quick start and testing without systemd. Run via included shell scripts; no service account required.
Linux — Systemd Service Ubuntu 20.04+ / RHEL 8+ / Debian 11+ FlowSquad-Linux-Systemd-v2.0.tar.gz Production Linux servers. Runs as a dedicated service account under systemd; auto-starts on boot. Recommended with Nginx reverse proxy.
Docker Package Any Docker-capable host (Linux, Windows, macOS) FlowSquad-Docker-v2.0.zip Containerised single-server deployments, cloud VMs, CI/CD pipelines
Kubernetes Package Kubernetes 1.21+ (any cloud or on-premises cluster) FlowSquad-Kubernetes-v2.0.zip High-availability, auto-scaling enterprise deployments; includes raw manifests and a Helm chart
💡
Choosing between the two Linux packages
Use Standalone if you want to try FlowSquad quickly on a Linux server or in a test environment — just extract and run a shell script, no root access needed. Use Systemd for all production deployments: it creates a dedicated service account, an auto-start systemd unit, and structured journal logging. Both packages contain the same FlowSquad binary and behave identically at runtime; the difference is only in how the service is started and managed.

For production: Linux Systemd + Nginx reverse proxy (CA-signed certificate), or Docker + Docker Compose. For high-availability: Kubernetes. All configurations pair with a dedicated PostgreSQL instance.

3. Windows Portable

The portable package is a self-contained ZIP archive. It requires no installation, runs directly from any folder, and needs no administrator privileges. All application data is written to the user's profile, not the extraction folder.

Prerequisites

Installation Steps

  1. Go to https://github.com/flowsquad-ai/Flowsquad/releases/ and download FlowSquad-v2.0-portable.zip.
  2. Verify the download integrity by comparing the SHA-256 hash published on the release page:
    Get-FileHash .\FlowSquad-v2.0-portable.zip -Algorithm SHA256
  3. Extract the archive to your chosen location — for example, C:\FlowSquad. Avoid extracting to a path that contains spaces.
  4. Start FlowSquad using one of the included launcher scripts at the root of the extracted folder:
    • Double-click Start-FlowSquad.bat — simplest option; works from Windows Explorer.
    • Double-click Start-FlowSquad.cmd — shows coloured status output in the console.
    The launcher starts the server in the background, waits up to 60 seconds for it to become ready, then opens http://localhost:5000 in your default browser automatically.
  5. Your default browser opens automatically at http://localhost:5000. If it does not open within 60 seconds, navigate there manually.
  6. Complete the Setup Wizard to configure your database, admin account, and license.
ℹ
Already running?
If FlowSquad is already running when you launch a start script, the script detects the existing process and prints the URL without starting a second instance. This is safe to run multiple times.

File and Data Locations

ItemLocation
Start / Stop scriptsRoot of extraction folder (e.g., C:\FlowSquad\)
Application binaries & librariesC:\FlowSquad\_internal\ (do not modify)
Evaluation license fileC:\FlowSquad\_internal\config\license.json
Application data & configuration database%LOCALAPPDATA%\FlowSquad\
Log files%LOCALAPPDATA%\FlowSquad\logs\flowsquad.log
Configuration database%LOCALAPPDATA%\FlowSquad\flowsquad_engine.db
Uploaded documents%LOCALAPPDATA%\FlowSquad\uploaded_documents\
ℹ
Data is separate from the binary
All application data is stored in %LOCALAPPDATA%\FlowSquad\, not inside the extraction folder. You can move, rename, or delete the extracted folder without losing your configuration or data. The _internal\ subfolder contains compiled binaries and bundled libraries — do not rename or reorganise it.

Stopping FlowSquad

Use one of the included stop scripts at the root of the extraction folder:

Alternatively, right-click the FlowSquad system tray icon and choose Exit.


4. Windows Installer (EXE)

The Windows installer is the recommended method for enterprise Windows deployments. It installs FlowSquad as a proper Windows application with Start Menu and desktop shortcuts, and registers an uninstaller via Programs and Features.

Prerequisites

⚠
Windows Smart App Control
If Smart App Control is enabled on Windows 11 (Settings → Privacy & Security → Windows Security → App & browser control → Smart App Control), it may block the FlowSquad installer from running because the binary is not yet code-signed with a Microsoft-trusted certificate.

How to fix: Open Windows Security → App & browser control → Smart App Control and switch it to Off. The change takes effect immediately — no restart is needed. You can then run the installer normally.

Note: Smart App Control cannot be turned back on once disabled (it permanently enters an off state). If you prefer to keep it enabled, contact your IT administrator to add a code-signing exception, or use the Docker deployment instead.

Installation Steps

  1. Go to https://github.com/flowsquad-ai/Flowsquad/releases/ and download FlowSquad-Setup-v2.0.exe.
  2. Verify the download:
    Get-FileHash .\FlowSquad-Setup-v2.0.exe -Algorithm SHA256
    Compare the output against the SHA-256 value listed on the release page.
  3. Right-click FlowSquad-Setup-v2.0.exe and select Run as administrator.
  4. Accept the End User License Agreement.
  5. Choose the installation directory. The default is C:\Program Files\FlowSquad.
  6. Click Install and wait for completion (approximately 1–2 minutes). The installer creates a desktop shortcut and configures the Windows Firewall automatically — no manual steps are required.
  7. On the Finish page, tick "Launch FlowSquad" to start the server and open the browser.
  8. Complete the Setup Wizard to configure your database, admin account, and license.
ℹ
FlowSquad didn't open a browser tab after install?
The server can take up to a minute to become ready on first launch.
  • Wait a moment — once the server is ready FlowSquad will appear as an icon in the Windows notification tray (bottom-right of the taskbar).
  • Right-click the tray icon and choose Open FlowSquad, or
  • Open your browser manually and navigate to http://localhost:5000.
  • The desktop shortcut launches the server and then opens the browser automatically — double-clicking it while FlowSquad is already running simply opens the browser to the running instance.

Starting and Stopping FlowSquad

Use the batch scripts installed with FlowSquad:

What the Installer Creates

File and Data Locations

ItemLocation
Application binariesC:\Program Files\FlowSquad\
Application data & configuration database%LOCALAPPDATA%\FlowSquad\
Log files%LOCALAPPDATA%\FlowSquad\logs\flowsquad.log
Configuration database%LOCALAPPDATA%\FlowSquad\flowsquad_engine.db

Uninstalling

Open Control Panel → Programs → Programs and Features, select FlowSquad, and click Uninstall. The uninstaller removes application binaries, the firewall rule, and all shortcuts. Application data stored in %LOCALAPPDATA%\FlowSquad\ is preserved — back up and remove this folder manually if you want a complete removal.


5. Linux Installers

Two Linux packages are available. Both contain the same FlowSquad binary and behave identically at runtime — they differ only in how the service is started and managed.

PackageFileUse When
Standalone FlowSquad-Linux-Standalone-v2.0.tar.gz Testing, demos, or environments where you cannot or do not want a systemd service. Start/stop via shell scripts. No root access required after initial extraction.
Systemd Service FlowSquad-Linux-Systemd-v2.0.tar.gz All production deployments. Includes a pre-configured systemd unit, a dedicated service account, and structured journal logging. Auto-starts on boot and restarts on crash.

Option A — Standalone (No systemd)

Use this for a quick start, testing, or environments without systemd.

Prerequisites

Install and Run

# Download
wget https://github.com/flowsquad-ai/Flowsquad/releases/download/v2.0/FlowSquad-Linux-Standalone-v2.0.tar.gz

# Verify integrity
sha256sum FlowSquad-Linux-Standalone-v2.0.tar.gz

# Extract -- creates FlowSquad-Linux-Standalone-v2.0/ in the current directory
tar -xzf FlowSquad-Linux-Standalone-v2.0.tar.gz
cd FlowSquad-Linux-Standalone-v2.0

# Make scripts executable
chmod +x start-flowsquad.sh stop-flowsquad.sh

# Start (runs in background; prints URL when ready)
./start-flowsquad.sh

# Stop
./stop-flowsquad.sh

FlowSquad is accessible at http://localhost:5000. Open your browser and complete the Setup Wizard.

ℹ
Package layout
The compiled binary and all bundled libraries live in _internal/. The helper scripts and LICENSE.txt are at the extraction root. Do not rename or reorganise the _internal/ subfolder — the binary resolves its data files relative to that directory.

Option B — Systemd Service (Recommended for Production)

Prerequisites

Step 1 — Download and Verify

# Download the Linux Systemd installer from the official release page
wget https://github.com/flowsquad-ai/Flowsquad/releases/download/v2.0/FlowSquad-Linux-Systemd-v2.0.tar.gz

# Verify the download integrity (compare against the hash published on the release page)
sha256sum FlowSquad-Linux-Systemd-v2.0.tar.gz

Step 2 — Extract the Archive

ℹ
The archive extracts into its own folder. Run the tar command in the directory where you want the extracted folder to appear (e.g. your home directory or /tmp).
# Extract -- this creates FlowSquad-Linux-Systemd-v2.0/ in the current directory
tar -xzf FlowSquad-Linux-Systemd-v2.0.tar.gz

# Enter the extracted folder
cd FlowSquad-Linux-Systemd-v2.0

Step 3 — Run the Installation Script

The package includes an install.sh script that handles all setup steps automatically (creating the system user, copying files, creating data/log directories, and installing the systemd service).

# Make the installer executable, then run it as root
chmod +x install.sh
sudo ./install.sh

The installer will:

💡
Manual installation (alternative)
If you prefer to install manually without using install.sh, expand the steps below.
▶ Manual installation steps
# Create dedicated system user
sudo useradd --system --no-create-home --shell /usr/sbin/nologin flowsquad

# Create installation directory and copy files
sudo mkdir -p /opt/flowsquad
sudo cp -r _internal /opt/flowsquad/

# Create data and log directories
sudo mkdir -p /var/lib/flowsquad /var/log/flowsquad

# Set ownership and permissions
sudo chown -R root:flowsquad /opt/flowsquad
sudo chmod -R 750 /opt/flowsquad
sudo chmod +x /opt/flowsquad/_internal/flowsquad
sudo chown -R flowsquad:flowsquad /var/lib/flowsquad /var/log/flowsquad

# Install the systemd unit file
sudo cp flowsquad.service /etc/systemd/system/
sudo systemctl daemon-reload

Step 4 — Enable and Start the Service

# Reload systemd to pick up the new unit file
sudo systemctl daemon-reload

# Enable the service to start automatically on boot
sudo systemctl enable flowsquad

# Start the service now
sudo systemctl start flowsquad

# Verify the service is running
sudo systemctl status flowsquad

At this point FlowSquad is running on http://127.0.0.1:5000 (bound to localhost only). Proceed to Section 8 — Deployment Models to configure Nginx and HTTPS.

Viewing Logs

# Follow live logs
sudo journalctl -u flowsquad -f

# Show logs from the last hour
sudo journalctl -u flowsquad --since "1 hour ago"

Service Management Commands

# Stop the service
sudo systemctl stop flowsquad

# Restart the service (e.g., after a configuration change)
sudo systemctl restart flowsquad

# Check service status
sudo systemctl status flowsquad

File and Data Locations

ItemLocation
Application binary/opt/flowsquad/_internal/flowsquad
Evaluation license file/opt/flowsquad/_internal/config/license.json
Application data/var/lib/flowsquad/
Configuration database/var/lib/flowsquad/flowsquad_engine.db
Uploaded documents/var/lib/flowsquad/uploaded_documents/
systemd logssudo journalctl -u flowsquad
Nginx access log/var/log/nginx/flowsquad-access.log
Nginx error log/var/log/nginx/flowsquad-error.log

6. Docker Deployment

The Docker package is the recommended deployment method for containerised environments. It ships as a compressed ZIP archive containing a pre-built Docker image, a docker-compose.yml, and ready-to-run deployment scripts — no registry access or internet connection is required at deployment time.

💡
Interactive deployment scripts included — just run and follow the prompts
The ZIP contains deploy.cmd (Windows) and deploy.sh (Linux). Both scripts are interactive: they run pre-flight checks, load the image, guide you through database and license choices, and start the container. Run the script with no arguments for a fully guided deployment. Manual steps are also documented below if you prefer full control.

Prerequisites

Step 1 — Download and Extract

# Download from the official release page
wget https://github.com/flowsquad-ai/Flowsquad/releases/download/v2.0/FlowSquad-Docker-v2.0.zip

# Verify the download
sha256sum FlowSquad-Docker-v2.0.zip

# Extract the archive
unzip FlowSquad-Docker-v2.0.zip
cd FlowSquad-Docker-v2.0

Step 2 — Load the Docker Image

Option A — Using the deployment script (recommended)

# Windows (Command Prompt)
deploy.cmd

# Linux (macOS not officially supported)
chmod +x deploy.sh
./deploy.sh

Both scripts are interactive. They will guide you through each step:

  1. System checks — verifies Docker version, Compose, disk space, and memory.
  2. Image load — loads the bundled .tar image automatically.
  3. Database setup — choose to start a managed Postgres container alongside FlowSquad, or configure your own database later in the Setup Wizard.
  4. License check — confirms the bundled evaluation license is in place. The evaluation license (1 product, 30 days) is activated automatically — no separate activation step is needed.
  5. Start — starts the container and polls /health until ready.

Skip Steps 3 and 4 if you use this option.

ℹ
Windows — running deploy.cmd
Double-click deploy.cmd in Windows Explorer, or open a Command Prompt in the extracted folder and type deploy.cmd. No additional configuration is required — batch files run directly on all supported Windows versions. Alternatively, use deploy.sh via Git Bash or WSL on Windows.
ℹ
Automatic firewall and health checks
After starting the container the script polls /health for up to 60 seconds. If the application does not respond, it checks whether Windows Firewall (or ufw / firewalld on Linux) is blocking port 5000 and attempts to add an allow-rule automatically. If elevation is required, it either requests a UAC prompt (Windows) or retries with sudo (Linux), then re-polls. You do not need to configure the firewall manually in most environments.

Note: Docker deployment scripts have been tested on Windows and Linux. macOS is not officially supported and has not been tested — use at your own risk.

Option B — Manual steps

# Load the pre-built image into the local Docker daemon
docker load < flowsquad-protected-2.0.tar

# Verify the image was loaded (image is stored as localhost/flowsquad:2.0)
docker images localhost/flowsquad

Step 3 — Configure docker-compose.yml

The archive includes a docker-compose.yml file pre-configured with sensible defaults. The only values you may need to change are the port mapping and the optional Postgres credentials. No other edits are required before starting.

services:
  flowsquad:
    image: localhost/flowsquad:2.0
    container_name: flowsquad-app
    ports:
      - "5000:5000"        # HTTP — change to 5443:5000 if using HTTPS
    volumes:
      # Persistent FlowSquad data (configuration DB, vector DB, uploaded documents)
      - flowsquad-data:/data

      # LICENSE: Bind the host machine-id into the container for license validation.
      # Linux/macOS hosts: this line is active by default.
      - /etc/machine-id:/etc/host-machine-id:ro
      # Windows hosts: comment out the line above and set FLOWSQUAD_CLUSTER_ID below.

    environment:
      - FLOWSQUAD_DATA_DIR=/data
      # Windows hosts or multi-cluster deployments: set a stable cluster ID
      # - FLOWSQUAD_CLUSTER_ID=your-stable-32-char-hex-id

    restart: unless-stopped
    healthcheck:
      test: ["CMD-SHELL", "curl --fail --silent http://localhost:5000/health || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 40s

volumes:
  flowsquad-data:
    driver: local

Step 4 — Start the Container

Option A — Using the deployment script (recommended)

Already done — the script in Step 2 starts the container automatically.

Option B — Manual

# Start in the background
docker compose up -d

# Verify the container is healthy
docker compose ps

# Follow startup logs
docker compose logs -f flowsquad

FlowSquad is now accessible at http://localhost:5000 (or the configured host port). Complete the Setup Wizard on first access.

ℹ
First-run admin account
The Setup Wizard prompts you to create a Global Admin account during initial setup. If you skip that step, FlowSquad will display a reminder on the login page to complete account creation before proceeding.

Management Commands

Windows (deploy.cmd) — pass a flag for direct management:

deploy.cmd /Status       # check container status and log level
deploy.cmd /Logs         # follow live logs (Ctrl+C to exit)
deploy.cmd /Stop         # stop the container
deploy.cmd /Help         # show all available options

Linux (deploy.sh) — re-run the script; if FlowSquad is already running it shows a management menu:

./deploy.sh

The menu offers: View logs, Restart, Stop, Re-deploy, and Collect a support bundle.

Non-interactive troubleshooting sub-commands are also available directly:

./deploy.sh selftest      # verify the application binary is intact
./deploy.sh diagnostics   # collect a support bundle (.tar.gz)
./deploy.sh debug         # restart with DEBUG logging
./deploy.sh nodebug       # restart with normal INFO logging

Or use Docker Compose directly:

# Stop all services
docker compose down

# Restart FlowSquad
docker compose restart flowsquad

# Update to a new version (load new image, then restart)
docker load < flowsquad-vX.Y.tar
docker compose up -d

# Back up the persistent data volume
docker run --rm \
  -v flowsquad-data:/data:ro \
  -v $(pwd):/backup \
  alpine tar czf /backup/flowsquad-backup-$(date +%Y%m%d).tar.gz /data

# View real-time logs
docker compose logs -f
ℹ
Database for Docker
By default the Docker image does not bundle a database server. Connect FlowSquad to an existing PostgreSQL or MySQL instance through the Setup Wizard. Use host.docker.internal as the database hostname if the database is running on the Docker host (Docker Desktop / macOS / Windows), or the host's LAN IP address for Linux hosts.

Optional: Bundled Postgres Container

For users who do not have an existing PostgreSQL server, the deploy scripts can start a managed Postgres container alongside FlowSquad. Both containers share the same Docker network — no external database or extra networking required.

Linux (deploy.sh) — the interactive script asks about the database during deployment. Select "Start a managed PostgreSQL container" and enter the settings when prompted (version, database name, user, password, port). The script saves these to a .env file and starts both containers.

Windows (deploy.cmd) — pass the /WithPostgres flag and set a password before running:

:: Set password (required — Postgres refuses to start without one)
set POSTGRES_PASSWORD=your-strong-password

:: Deploy FlowSquad + bundled Postgres
deploy.cmd /WithPostgres

Alternatively, create a .env file in the same folder so the password is reused on every deploy:

echo POSTGRES_PASSWORD=your-strong-password > .env
deploy.cmd /WithPostgres

Enter these values in the Setup Wizard → Database step:

FieldValue
Hostpostgres
Port5432
Databaseflowsquad (or the value of POSTGRES_DB)
Usernameflowsquad (or the value of POSTGRES_USER)
Passwordvalue of POSTGRES_PASSWORD

The database name and username default to flowsquad. Override them by setting POSTGRES_DB and POSTGRES_USER in your environment or .env file before running the deploy command. Postgres data is persisted in a separate named volume (postgres-data) and survives container restarts and image upgrades.


7. Kubernetes Deployment

Deploy FlowSquad to Kubernetes for high-availability and auto-scaling production environments. The Kubernetes package is a separate download — FlowSquad-Kubernetes-v2.0.zip — available from the releases page. It ships in two flavours:

Prerequisites

💡
Image included — no separate Docker package needed
FlowSquad-Kubernetes-v2.0.zip bundles flowsquad-protected-2.0.tar directly. The deploy.sh script runs all pre-flight checks (kubectl, cluster connectivity, Docker, node readiness), then prompts for your registry URL to load and push the image automatically. You can also skip the script and apply the YAML files directly with kubectl apply -f if you prefer full control.
ℹ
Managed database required
Do not run the FlowSquad database inside the same Kubernetes cluster unless you have a dedicated stateful database operator. Use a managed database service (AWS RDS, Google Cloud SQL, Azure Database for PostgreSQL, or a dedicated on-premises database server) for all production Kubernetes deployments.

Step 1 — Download, Verify, and Extract

# Download the Kubernetes package
wget https://github.com/flowsquad-ai/Flowsquad/releases/download/v2.0/FlowSquad-Kubernetes-v2.0.zip

# Verify the download
sha256sum FlowSquad-Kubernetes-v2.0.zip
# Compare against FlowSquad-Kubernetes-v2.0.zip.sha256 from the release page

# Extract
unzip FlowSquad-Kubernetes-v2.0.zip
cd FlowSquad-Kubernetes-v2.0

Step 2 — Push the Image to Your Registry

The Kubernetes package includes flowsquad-protected-2.0.tar. Load it and push it to your internal registry before deploying. The deploy.sh script handles this interactively — or do it manually:

# Load the bundled image
docker load < flowsquad-protected-2.0.tar

# Tag for your internal registry
docker tag flowsquad:latest your-registry.company.com/flowsquad:v2.0

# Push to the registry
docker push your-registry.company.com/flowsquad:v2.0
💡
Recommended — use deploy.sh instead of manual steps
Running ./deploy.sh handles Steps 2–8 for you: it checks all prerequisites, prompts for a registry URL to load and push the image, then applies all manifests in order pausing before secrets:
chmod +x deploy.sh
./deploy.sh
Or apply everything manually (after editing 03-secrets.yaml):
kubectl apply -f .

Step 3 — Create the Namespace

kubectl create namespace flowsquad

Step 4 — Create the License Secret

Each Kubernetes cluster requires a stable cluster ID that was used when generating the FlowSquad license. Generate the ID once and store it securely — it must never change once the license is issued:

# Generate a stable cluster ID (run once; record the output)
python3 -c "import hashlib,uuid; print(hashlib.sha256(str(uuid.uuid4()).encode()).hexdigest()[:32])"

# Apply the cluster ID secret
kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: flowsquad-machine
  namespace: flowsquad
  labels:
    app: flowsquad
    component: license
type: Opaque
stringData:
  FLOWSQUAD_CLUSTER_ID: "REPLACE_WITH_YOUR_STABLE_CLUSTER_ID"
EOF

Step 5 — Create the Application Secret

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: flowsquad-secrets
  namespace: flowsquad
type: Opaque
stringData:
EOF

Step 6 — Create a PersistentVolumeClaim

kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: flowsquad-data
  namespace: flowsquad
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: standard   # Replace with your cluster's storage class
EOF

Step 7 — Deploy FlowSquad

kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: flowsquad
  namespace: flowsquad
spec:
  replicas: 1
  selector:
    matchLabels:
      app: flowsquad
  template:
    metadata:
      labels:
        app: flowsquad
    spec:
      containers:
        - name: flowsquad
          image: your-registry.company.com/flowsquad:v2.0
          ports:
            - containerPort: 5000
          env:
            - name: FLOWSQUAD_DATA_DIR
              value: /data
            - name: FLOWSQUAD_CLUSTER_ID
              valueFrom:
                secretKeyRef:
                  name: flowsquad-machine
                  key: FLOWSQUAD_CLUSTER_ID
          volumeMounts:
            - name: data
              mountPath: /data
          livenessProbe:
            httpGet:
              path: /health
              port: 5000
            initialDelaySeconds: 40
            periodSeconds: 30
          resources:
            requests:
              memory: "2Gi"
              cpu: "1000m"
            limits:
              memory: "8Gi"
              cpu: "4000m"
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: flowsquad-data
EOF

Step 8 — Create a Service and Ingress

# Internal ClusterIP service
kubectl apply -f - <<EOF
apiVersion: v1
kind: Service
metadata:
  name: flowsquad-service
  namespace: flowsquad
spec:
  selector:
    app: flowsquad
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
  type: ClusterIP
EOF

# Ingress (requires an ingress controller such as nginx-ingress)
kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: flowsquad-ingress
  namespace: flowsquad
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "100m"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
    cert-manager.io/cluster-issuer: "letsencrypt-prod"   # If using cert-manager
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - flowsquad.company.com
      secretName: flowsquad-tls
  rules:
    - host: flowsquad.company.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: flowsquad-service
                port:
                  number: 80
EOF

Alternative — Deploy with Helm

If your cluster uses Helm, use the chart included in the Kubernetes package instead of the raw manifests:

# Install using the included chart tarball
helm install flowsquad flowsquad-helm-2.0.tgz \
  --namespace flowsquad --create-namespace \
  --set image.repository=your-registry.company.com/flowsquad \
  --set image.tag=v2.0 \
  --set ingress.hosts[0].host=flowsquad.company.com

# Or customise via a values file (recommended for production)
# Edit flowsquad/values.yaml first, then:
helm install flowsquad flowsquad-helm-2.0.tgz \
  --namespace flowsquad --create-namespace \
  -f my-values.yaml

# Upgrade to a new version
helm upgrade flowsquad flowsquad-helm-NEW.tgz \
  --namespace flowsquad -f my-values.yaml

# Check status
kubectl get all -n flowsquad
helm status flowsquad -n flowsquad

Kubernetes Management Commands

# Check pod and service status
kubectl get all -n flowsquad

# Follow live logs
kubectl logs -n flowsquad -l app=flowsquad -f

# Scale replicas manually
kubectl scale deployment flowsquad -n flowsquad --replicas=5

# Rolling update to a new image
kubectl set image deployment/flowsquad flowsquad=your-registry.company.com/flowsquad:vX.Y -n flowsquad

# Port-forward for local access (dev / testing)
kubectl port-forward -n flowsquad svc/flowsquad-service 5000:80
# Then open: http://localhost:5000

8. Deployment Models (HTTP and HTTPS)

FlowSquad supports two production deployment models. Choose the model that suits your network architecture. Both models are fully supported and enterprise-ready.

⚠
Enterprise certificate policy
All production deployments must use a certificate issued by a trusted Certificate Authority — either a publicly trusted CA (such as Let's Encrypt or a commercial CA) or your organisation's internal enterprise CA. Self-signed certificates are not permitted in production environments and must not be used for end-user-facing deployments.

Model A — FlowSquad Behind an Nginx Reverse Proxy (Recommended)

In this model FlowSquad runs as a plain HTTP service on 127.0.0.1:5000 (not exposed externally). Nginx handles HTTPS termination, certificate management, and forwards all requests to FlowSquad over the local loopback interface. This is the recommended production architecture because it:

Step 1 — Install Nginx

# Ubuntu / Debian
sudo apt-get install -y nginx

# RHEL / CentOS / Fedora
sudo dnf install -y nginx
sudo systemctl enable --now nginx

Step 2 — Obtain a Certificate

Use one of the following options:

Option A — Let's Encrypt (public domain, internet-accessible)

# Install certbot
sudo apt-get install -y certbot python3-certbot-nginx   # Ubuntu/Debian
# sudo dnf install -y certbot python3-certbot-nginx     # RHEL/CentOS

# Obtain and install certificate (certbot configures Nginx automatically)
sudo certbot --nginx -d flowsquad.company.com

# Verify automatic renewal
sudo certbot renew --dry-run

Certbot installs a renewal timer at /etc/cron.d/certbot or a systemd timer. Certificates renew automatically 30 days before expiry.

Option B — Enterprise CA or Commercial Certificate

Obtain the following files from your Certificate Authority:

# If a chain file was provided, concatenate it with your certificate
cat flowsquad.crt ca-bundle.crt > /etc/ssl/certs/flowsquad-fullchain.crt

# Or copy the certificate directly (if already a full chain)
sudo cp flowsquad.crt /etc/ssl/certs/flowsquad.crt

# Copy the private key (restrict permissions)
sudo cp flowsquad.key /etc/ssl/private/flowsquad.key
sudo chmod 600 /etc/ssl/private/flowsquad.key
sudo chown root:root /etc/ssl/private/flowsquad.key

Step 3 — Configure Nginx

sudo tee /etc/nginx/sites-available/flowsquad > /dev/null <<'EOF'
upstream flowsquad_backend {
    server 127.0.0.1:5000 max_fails=3 fail_timeout=30s;
    keepalive 32;
}

# Redirect HTTP to HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name flowsquad.company.com;

    # Let's Encrypt renewal challenge
    location /.well-known/acme-challenge/ {
        root /var/www/html;
    }

    location / {
        return 301 https://$server_name$request_uri;
    }
}

# HTTPS — main FlowSquad entry point
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name flowsquad.company.com;

    # Certificate paths — update to match your certificate location
    ssl_certificate     /etc/ssl/certs/flowsquad.crt;
    ssl_certificate_key /etc/ssl/private/flowsquad.key;

    # TLS security settings (A+ rating)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305';
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;

    # Security headers
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Logging
    access_log /var/log/nginx/flowsquad-access.log;
    error_log  /var/log/nginx/flowsquad-error.log warn;

    # Allow large file uploads (match your organisation's document size policy)
    client_max_body_size 100M;
    client_body_timeout 300s;
    client_header_timeout 300s;

    # Gzip compression
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript;

    # Proxy to FlowSquad
    location / {
        proxy_pass http://flowsquad_backend;

        # CRITICAL: do NOT let nginx rewrite Location headers from the backend.
        # Without this, nginx rewrites 302 redirects to external Identity Providers
        # (Keycloak, Okta, etc.) during SAML/OAuth2 login, replacing the IdP host
        # with the FlowSquad host. The browser then hits FlowSquad instead of the
        # IdP and gets a 404. See Reference Guide -- nginx for details.
        proxy_redirect off;

        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_set_header X-Forwarded-Host   $server_name;
        proxy_set_header X-Forwarded-Port   $server_port;

        # WebSocket support (required for real-time features)
        proxy_http_version 1.1;
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_connect_timeout 300s;
        proxy_send_timeout    300s;
        proxy_read_timeout    300s;

        proxy_request_buffering off;
    }

    # Health check endpoint
    location /health {
        proxy_pass http://flowsquad_backend;
        access_log off;
    }

    # Deny access to hidden files and logs
    location ~ /\. {
        deny all; access_log off; log_not_found off;
    }
}
EOF

# Enable the site
sudo ln -s /etc/nginx/sites-available/flowsquad /etc/nginx/sites-enabled/

# Test Nginx configuration
sudo nginx -t

# Reload Nginx (zero-downtime)
sudo systemctl reload nginx

FlowSquad is now accessible at https://flowsquad.company.com. FlowSquad itself continues to run on plain HTTP internally — Nginx handles all TLS. There is no SSL configuration required inside FlowSquad's Setup Wizard for this model.

Model B — FlowSquad with Direct HTTPS (No Reverse Proxy)

In this model FlowSquad terminates TLS directly. This is suitable for environments where an Nginx reverse proxy cannot be deployed — for example, a standalone Windows server or a Docker container exposed directly to the network. The Setup Wizard configures TLS in this scenario.

ℹ
Certificate requirements
A certificate and private key signed by a trusted Certificate Authority are required. Certificates must be in PEM format. Obtain them from your enterprise CA or a commercial CA before proceeding.

Preparing the Certificate Files

Place the following files in a secure directory accessible to FlowSquad (e.g., %LOCALAPPDATA%\FlowSquad\ssl\ on Windows, or /var/lib/flowsquad/ssl/ on Linux):

On Linux, restrict private key access:

sudo mkdir -p /var/lib/flowsquad/ssl
sudo cp flowsquad.crt /var/lib/flowsquad/ssl/
sudo cp flowsquad.key /var/lib/flowsquad/ssl/
sudo chmod 600 /var/lib/flowsquad/ssl/flowsquad.key
sudo chown flowsquad:flowsquad /var/lib/flowsquad/ssl/flowsquad.key

Configuring HTTPS in the Setup Wizard

  1. Open the FlowSquad Setup Wizard (first-run) or navigate to Admin Panel → System Settings → SSL/TLS Configuration.
  2. Enable HTTPS.
  3. Set Certificate File to the full path of flowsquad.crt.
  4. Set Private Key File to the full path of flowsquad.key.
  5. Click Test & Save. FlowSquad validates the certificate and private key, then restarts on the HTTPS port.
  6. Update your firewall to allow inbound TCP on port 443 and block external access to port 5000.

After configuration, FlowSquad is accessible at https://your-server:443.


9. Environment Variables & Runtime Configuration

FlowSquad reads a set of environment variables at startup. These override the defaults set by the installer and are the correct way to customise the port, bind address, data directory, log level, and cluster ID — without modifying any compiled file or config database.

ℹ
Where to set environment variables
  • systemd — add Environment="KEY=value" lines to the [Service] section of /etc/systemd/system/flowsquad.service, then run sudo systemctl daemon-reload && sudo systemctl restart flowsquad
  • Docker / Docker Compose — add entries to the environment: block in docker-compose.yml, or pass -e KEY=value on docker run
  • Windows Service — set system environment variables via Control Panel → System → Advanced → Environment Variables, or add them in the registry key for the FlowSquad service
  • Windows Portable / Linux Standalone — set before running the start script: export FLOWSQUAD_PORT=8080 && ./start-flowsquad.sh (Linux), or set FLOWSQUAD_PORT=8080 && Start-FlowSquad.bat (Windows)

All Supported Variables

VariableDefaultDescription
FLOWSQUAD_PORT 5000 TCP port FlowSquad listens on. Change to any available port (e.g. 8080, 443 for direct HTTPS).
FLOWSQUAD_HOST 0.0.0.0 Network interface to bind to. See note below on when to change this.
FLOWSQUAD_DATA_DIR Platform-specific
(see table below)
Directory where FlowSquad writes the configuration database (flowsquad_engine.db), vector store, and uploaded documents. Must be writable by the FlowSquad process.
FLOWSQUAD_LOG_LEVEL INFO Application log verbosity. Accepted values: DEBUG, INFO, WARNING, ERROR. Use DEBUG to capture detailed request/response traces for troubleshooting; revert to INFO for production (DEBUG logs are verbose and may expose sensitive data in log files).
FLOWSQUAD_ENV production Runtime environment hint. Set to development to enable more detailed error pages and relaxed HTTPS checks. Should always be production in deployed environments.
FLOWSQUAD_CLUSTER_ID (auto-detected) License binding identifier. Required for Docker and Kubernetes deployments where /etc/machine-id is not available. Must be a stable 32-character hex string that was used when the license was issued. Do not change after license issuance.
FLOWSQUAD_SECRET_KEY (auto-generated) Session signing key. Auto-generated and persisted in the configuration database on first start. Only override if you need deterministic session keys across multiple instances (advanced use case).

Default Data Directory by Platform

PlatformDefault FLOWSQUAD_DATA_DIR
Windows (Portable / Installer)%LOCALAPPDATA%\FlowSquad\
Linux (Standalone)Subdirectory of the extraction folder
Linux (Systemd)/var/lib/flowsquad/ (set in the systemd unit file)
Docker/data (inside the container; backed by a named volume)
Kubernetes/data (inside the container; backed by the PVC)

Bind Address: 0.0.0.0 vs 127.0.0.1

By default, FlowSquad binds to 0.0.0.0 (all interfaces), which makes it reachable on any IP address of the host. This is intentional for Docker and Kubernetes, where the container has no external firewall and the port mapping controls external exposure.

DeploymentRecommended FLOWSQUAD_HOSTWhy
Linux with nginx reverse proxy (Model A) 127.0.0.1 FlowSquad should only be reachable from the local nginx process, not from external network interfaces. Binding to loopback ensures port 5000 is never exposed externally, even if the firewall is misconfigured. The nginx config proxies 127.0.0.1:5000 over the loopback.
Windows with IIS reverse proxy 127.0.0.1 Same reason as Linux + nginx. IIS ARR proxies to localhost:5000 over loopback.
Docker (port-mapped) 0.0.0.0 (default) Docker's port mapping (-p 5000:5000) controls external exposure. The container itself uses 0.0.0.0 so Docker can route traffic to it internally.
Direct HTTPS (Model B) or standalone testing 0.0.0.0 (default) FlowSquad handles all connections directly; it must listen on all interfaces or the specific external interface IP.
Windows Portable (local-only) 127.0.0.1 (optional) If only local browser access is needed and you want to prevent LAN access, change to loopback.

How to Change the Bind Address

Linux systemd: add to the [Service] section:

Environment="FLOWSQUAD_HOST=127.0.0.1"

Then reload: sudo systemctl daemon-reload && sudo systemctl restart flowsquad

Docker Compose — add to the environment: block:

environment:
  - FLOWSQUAD_HOST=0.0.0.0   # Keep 0.0.0.0 for Docker; rely on port mapping

Linux Standalone / Windows Portable — set before launching:

# Linux
export FLOWSQUAD_HOST=127.0.0.1
./start-flowsquad.sh

# Windows
set FLOWSQUAD_HOST=127.0.0.1
Start-FlowSquad.bat

Running in Debug Mode

Debug mode enables verbose request/response logging and detailed error pages. Never use DEBUG in production — it logs request payloads, headers, and database queries which may include credentials and user data.

# Linux systemd -- add to [Service] section of the unit file, then reload
Environment="FLOWSQUAD_LOG_LEVEL=DEBUG"
Environment="FLOWSQUAD_ENV=development"

# Linux Standalone
export FLOWSQUAD_LOG_LEVEL=DEBUG
export FLOWSQUAD_ENV=development
./start-flowsquad.sh

# Docker Compose -- add to environment block
- FLOWSQUAD_LOG_LEVEL=DEBUG
- FLOWSQUAD_ENV=development

# Windows (Portable)
set FLOWSQUAD_LOG_LEVEL=DEBUG
set FLOWSQUAD_ENV=development
Start-FlowSquad.bat

Running on a Custom Port

# Linux systemd -- add to [Service] section, then daemon-reload & restart
Environment="FLOWSQUAD_PORT=8080"

# Linux Standalone
export FLOWSQUAD_PORT=8080
./start-flowsquad.sh

# Docker Compose -- change the host-side port mapping AND set the env var
ports:
  - "8080:8080"   # host:container
environment:
  - FLOWSQUAD_PORT=8080

# Windows
set FLOWSQUAD_PORT=8080
Start-FlowSquad.bat
⚠
Update your reverse proxy when changing the port
If you change FLOWSQUAD_PORT and are using nginx or IIS as a reverse proxy, update the proxy_pass target (nginx) or web.config rewrite URL (IIS) to match the new port. Also update any firewall rules that reference port 5000.

10. Security: TLS & Encryption

ℹ
Deployment-time security decisions
The two security topics below are settled at deploy time — before users log in. Post-deployment security (RBAC, audit logs, hardening checklist) is covered in the Admin Guide. A printable Security Reference is at security-guide.html.

TLS / HTTPS

All production deployments must use HTTPS. The recommended approach for Linux and Docker is Nginx as a reverse proxy (Model A in Section 8) — TLS lives in Nginx and FlowSquad runs plain HTTP internally. For Windows or environments without a reverse proxy, configure TLS directly inside FlowSquad (Model B).

OptionUse CaseWhere to Configure
Let's Encrypt (free, auto-renewing) Public domain, internet-accessible Linux/Docker deployment Nginx reverse proxy — sudo certbot --nginx -d flowsquad.company.com
Commercial / Enterprise CA Internal deployments, air-gapped, or corporate certificate policy Nginx: place .crt and .key in /etc/ssl/ and update ssl_certificate paths (Section 8). Windows direct: Setup Wizard → SSL/TLS → Upload Custom Certificate.
Self-signed Development / local testing only — not permitted in production Setup Wizard → SSL/TLS → Generate Certificate

Configuration Database Security

The configuration database (flowsquad_engine.db) stores API keys, credentials, and license information. All sensitive values are encrypted at the field level before storage — API keys, passwords, SAML keys, and tokens are never stored in plaintext. Whole-file database encryption is not available; for at-rest protection of the entire database file, use filesystem-level encryption (LUKS/dm-crypt on Linux, BitLocker on Windows, or place the Docker volume on an encrypted filesystem).

File Permissions (Minimum Baseline)

# Linux
chmod 600 /var/lib/flowsquad/flowsquad_engine.db
chown flowsquad:flowsquad /var/lib/flowsquad/flowsquad_engine.db

# Windows (Command Prompt — Administrator)
icacls "%LOCALAPPDATA%\FlowSquad\flowsquad_engine.db" /inheritance:d
icacls "%LOCALAPPDATA%\FlowSquad\flowsquad_engine.db" /remove "Everyone"
icacls "%LOCALAPPDATA%\FlowSquad\flowsquad_engine.db" /grant:r "$env:USERNAME:(R,W)"
ℹ
Database provisioning & first-run configuration
Provisioning PostgreSQL / MySQL and completing the Setup Wizard (LLM provider, authentication, integrations, admin account, license) are covered step-by-step in the Setup Guide. FlowSquad uses a dual-database architecture: the configuration database (flowsquad_engine.db, SQLite, auto-created) for settings and secrets, and the application database (PostgreSQL or MySQL, provisioned by you) for all product data.

Configuration Database — File Locations

PlatformLocation
Windows (Portable / Installer)%LOCALAPPDATA%\FlowSquad\flowsquad_engine.db
Linux (systemd)/var/lib/flowsquad/flowsquad_engine.db
Docker/data/flowsquad_engine.db (inside the mounted volume)

11. Post-Install Checklist

Confirm the installation is complete before handing off to the Setup Guide.

Log File Locations

PlatformLocation / Command
Windows (Portable / Installer)%LOCALAPPDATA%\FlowSquad\logs\flowsquad.log
Linux (systemd)sudo journalctl -u flowsquad -f
Linux (Nginx access)/var/log/nginx/flowsquad-access.log
Linux (Nginx errors)/var/log/nginx/flowsquad-error.log
Dockerdocker compose logs -f flowsquad

12. Troubleshooting: Installation & Startup

Windows: Script Won't Run

Batch and CMD files run directly on Windows without any additional configuration. If deploy.cmd or Start-FlowSquad.bat does not start, ensure you are running it from a Command Prompt opened in the same folder as the script, or double-click the file directly in Windows Explorer. Do not move the scripts outside the extraction folder.

Windows / Linux: Port 5000 Blocked by Firewall

If the server starts but the browser cannot reach it, a host firewall is the most likely cause. The deploy and launcher scripts detect this automatically: after a failed health-check they query the firewall, add an inbound allow-rule for TCP 5000, and retry. If automatic fixing fails (e.g. no admin rights), they print the exact manual command. You can also add the rule yourself:

# Windows — run in an elevated (Administrator) Command Prompt:
netsh advfirewall firewall add rule name="FlowSquad-Port-5000" ^
    dir=in action=allow protocol=TCP localport=5000 enable=yes profile=any

# Linux — ufw:
sudo ufw allow 5000/tcp

# Linux — firewalld:
sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload

Cannot Log In with admin / admin After Setup

The default admin / admin account is created during the Setup Wizard → Step 7 (Users), or automatically when you click Complete Setup if no admin was created in Step 7. If login still fails after setup:

  1. Check the application log for the line LocalAuthProvider: User 'admin' not found:
    %LOCALAPPDATA%\FlowSquad\logs\flowsquad.log (Windows) or /data/logs/flowsquad.log (Docker)
  2. If the line is present, re-open the Setup Wizard as a logged-in global admin and complete Step 7 to create the admin account.
  3. If you cannot log in at all, restart FlowSquad — the startup migration will create the account on boot if none exists.

Windows: FlowSquad Won't Start

Symptoms: Running Start-FlowSquad.bat or Start-FlowSquad.cmd shows an error or the browser does not open after 60 seconds.

  1. Check whether port 5000 is already in use: Get-NetTCPConnection -LocalPort 5000
  2. If another process is using port 5000, use Stop-FlowSquad.bat first to stop any stale FlowSquad instance, or kill the conflicting process: Get-Process -Id (Get-NetTCPConnection -LocalPort 5000).OwningProcess | Stop-Process
  3. Review %LOCALAPPDATA%\FlowSquad\logs\flowsquad.log for error details
  4. Verify that the _internal\ subfolder exists alongside the start scripts — do not move the scripts outside the extraction folder

Docker: Container Exits Immediately

Symptoms: docker ps -a shows Exited (1).

# Inspect logs
docker logs flowsquad 2>&1 | tail -20

Common causes:

SSL / TLS Issues

Port Already in Use

# Windows
netstat -ano | findstr :5000
taskkill /PID <pid> /F

# Linux
sudo lsof -i :5000
sudo kill <pid>
→
Installation complete — next step: Setup Guide
FlowSquad is running. Open it in your browser and proceed to the Setup Guide to complete the 10-step Setup Wizard: SSL/TLS, database, vector DB, LLM provider, authentication, integrations, admin account, license, and system settings.

Frequently Asked Questions

Where do I download the FlowSquad installer?

All FlowSquad installers are published at https://github.com/flowsquad-ai/Flowsquad/releases/. Available packages include FlowSquad-v2.0-portable.zip (Windows portable), FlowSquad-Setup-v2.0.exe (Windows installer), FlowSquad-v2.0-linux.tar.gz (Linux binary), and FlowSquad-v2.0-docker.zip (Docker image). Always verify the SHA-256 hash against the value published on the release page before installing.

What are the system requirements for FlowSquad?

FlowSquad requires a minimum of 4 CPU cores, 8 GB RAM, and 20 GB disk space. For production the recommendation is 8+ cores, 16+ GB RAM, and 100+ GB SSD. A PostgreSQL 14+ or MySQL 8.0+ database is required for multi-user deployments. Supported operating systems include Windows 10/11 and Windows Server 2016+, Ubuntu 20.04+, and RHEL/CentOS 8+. No Python installation is required on the target host — the installer includes an embedded runtime.

How do I install FlowSquad on Linux?

Download FlowSquad-v2.0-linux.tar.gz from the releases page and extract it to /opt/flowsquad. Create a dedicated flowsquad system user, set up the data directory at /var/lib/flowsquad, create a systemd service unit at /etc/systemd/system/flowsquad.service, and run sudo systemctl enable --now flowsquad. Install Nginx as a reverse proxy for HTTPS termination. The full step-by-step procedure is in the Linux Installer section above. No Python or virtual environment is required.

How do I deploy FlowSquad with Docker?

Download FlowSquad-v2.0-docker.zip from the releases page. Extract the archive and either run the included deployment script (deploy.cmd on Windows or ./deploy.sh on Linux/macOS) for a one-command deployment with pre-flight checks, or follow the manual steps: load the image with docker load < flowsquad-protected-2.0.tar, update docker-compose.yml with your machine-id volume mount and environment variables, then run docker compose up -d. FlowSquad starts on port 5000. Complete the Setup Wizard on first access to connect to your PostgreSQL or MySQL database. No registry access is required — the image is distributed as a self-contained tar file.

How do I deploy FlowSquad on Kubernetes?

Download the separate FlowSquad-Kubernetes-v2.0.zip package from the releases page. It contains two deployment options: raw Kubernetes manifests (eight numbered YAML files) with a deploy.sh script that applies them in order, and a Helm chart (flowsquad-helm-2.0.tgz) for Helm-based workflows. Push the Docker image to your internal registry first, then run ./deploy.sh (manifests) or helm install flowsquad flowsquad-helm-2.0.tgz (Helm). Kubernetes 1.21 or later is required. Use a managed external database — do not run the FlowSquad database inside the cluster.

Where is the FlowSquad configuration database stored?

The configuration database file is named flowsquad_engine.db. On Windows (Portable and Installer) it is stored at %LOCALAPPDATA%\FlowSquad\flowsquad_engine.db. On Linux with the systemd deployment it is at /var/lib/flowsquad/flowsquad_engine.db. In Docker it is at /data/flowsquad_engine.db inside the mounted volume. Always include this file in your backup routine — it contains application settings and encrypted credentials.

Should I configure SSL inside FlowSquad or use a reverse proxy?

For Linux and Docker deployments the recommended approach is Nginx as a reverse proxy handling TLS termination — FlowSquad runs on plain HTTP on localhost and is never exposed directly. This simplifies certificate management, supports Let's Encrypt auto-renewal, and allows zero-downtime FlowSquad restarts. For standalone Windows deployments or scenarios where a reverse proxy cannot be deployed, FlowSquad can terminate TLS directly using a CA-issued certificate configured through the Setup Wizard. Self-signed certificates are not permitted in production environments.

How do I upgrade FlowSquad to a new version?

Always take a full database backup before upgrading. For Windows (Installer): download and run the new FlowSquad-Setup-vX.Y.exe — it upgrades in-place and preserves all data in %LOCALAPPDATA%\FlowSquad\. For Linux: stop the service, replace the binary in /opt/flowsquad/ with the new version from the tar archive, and restart the service. For Docker: load the new image tar, update the image tag in docker-compose.yml, and run docker compose up -d. FlowSquad applies all database schema migrations automatically on startup.

Can FlowSquad run in an air-gapped environment?

Yes. FlowSquad can run fully offline when using Ollama as the LLM provider and ChromaDB as the vector database — both run locally with no internet dependency. License validation is performed locally without requiring internet access. All installer packages are distributed as self-contained downloadable archives and can be transferred to air-gapped environments via USB or internal file transfer. External integrations (Jira, Confluence, Git providers) are optional and only require connectivity if enabled.