The self-hosted worker is a Docker container you run on a Linux VM inside your network. It claims pentest jobs from the TigerGate platform, spawns sandbox containers per scan, and reports findings back — all over outbound HTTPS. No inbound ports required.

When to use it

SituationHostedSelf-hosted
Public target on the open internetYesYes
Target behind a VPNNoYes
Target on a private subnet (10.x / 172.x / 192.168.x)NoYes
IP allow-list TigerGate isn’t onNoYes
Private codebase you can’t push to a public Git hostNoYes
Corporate policy forbids SaaS probing your infrastructureNoYes
The two paths share everything above the worker — same dashboard, same findings inbox, same budgets, same LLM-provider config. The only difference is where the agent’s sandbox runs.

What the worker does

  1. The platform queues a scan when you click Start scan in the dashboard.
  2. Your worker long-polls the platform for jobs.
  3. When a job lands, the worker spawns 2–4 short-lived sandbox containers — each has a headless browser + terminal + HTTP proxy.
  4. The agents probe the target. Findings stream back to the platform.
  5. Scan ends on time-cap or budget-cap; the worker tears down its sandboxes.

What stays on your host

Stays on the worker hostSent to TigerGate
The sandbox containers themselves (per-scan)Findings (severity, payload, narrative)
Scan artifacts (HTTP traces, screenshots) — under tigerstrike_runs volume, retention-sweptSpend telemetry + scan timing metadata
The target’s responses (request/response bodies, screenshots) — until the platform retention sweeper prunes themNone of the LLM API key — that lives on TigerGate’s side; we inject it into each scan job at runtime.
The LLM provider key never touches your worker host. The agents make LLM calls through the platform, not directly. This means you don’t have to allow-list api.openai.com on the worker host’s firewall.

What you need

  • A Linux VM with 8 vCPU / 16 GB RAM / 40 GB disk — see Requirements.
  • Docker 24+ + Docker Compose v2.
  • Outbound HTTPS to your region’s API host (api.tigergate.dev on us1) and Docker Hub. See Outbound endpoints.
  • A pentest-worker API key from the dashboard. See Setup.

Run it

First, in the dashboard: configure your LLM provider (Pentest → Settings → AI Providers) and create a pentest-worker API key (Organization → API Keys). Then run the worker with Docker or Kubernetes. The image is prebuilt — tigergate/tigerstrike (Docker Hub); no build step.
docker-compose.client.yml:
name: tigerstrike
services:
  tigerstrike:
    image: tigergate/tigerstrike:1.0.0      # pin in production
    entrypoint: ["/usr/local/bin/tigerstrike-service"]
    command: ["--port", "8085", "--workers", "2"]
    network_mode: host                      # required — worker reaches its sandboxes on the host bridge
    restart: unless-stopped
    stop_grace_period: 30s                  # let in-flight scans drain on SIGTERM
    environment:
      TIGERGATE_API_KEY: "tg_<pentest-worker-key>"
      TIGERSTRIKE_WORKER_NAME: "acme-prod-dc1"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock          # sandbox runs on the host daemon
      - tigerstrike_runs:/var/lib/tigerstrike/runs         # scan artifacts
      - /var/lib/tigerstrike/codebase:/var/lib/tigerstrike/codebase:ro   # optional: private codebases
    mem_limit: 4g
    cpus: 2
volumes:
  tigerstrike_runs:
Run it:
docker compose -f docker-compose.client.yml up -d
docker compose -f docker-compose.client.yml logs -f tigerstrike   # expect: worker registered as "…"
Full walkthrough: Setup.
The worker self-registers within ~10s — confirm it in Pentest → Scanners, then pick it as the runner on a new scan. No inbound ports are needed either way.

Configuration options

Set these as environment variables (Compose environment: / Kubernetes env:). Only TIGERGATE_API_KEY is required.
VariableDefaultPurpose
TIGERGATE_API_KEY— (required)pentest-worker token from the dashboard.
TIGERSTRIKE_WORKER_NAMEtigerstrike-onpremName in the fleet view — give each host a unique one.
TIGERGATE_REGIONus1Region that owns your organization. Must match the region the API key was issued in.
TIGERGATE_BACKEND_URLfrom TIGERGATE_REGIONExplicit platform URL. Overrides the region — set it only for a self-hosted or staging platform.
TIGERSTRIKE_OUTPUT_ROOT/var/lib/tigerstrike/runsWhere scan artifacts are written.
TIGERSTRIKE_BOOT_TIMEOUT5mGrace for a scan’s first sandbox to boot. Raise to 15m on slow-egress hosts (first sandbox pull ~600 MB).
TIGERSTRIKE_STALL_TIMEOUT10mCancel a scan after this long with no progress.
TIGERSTRIKE_MAX_SCAN_TIMEOUT12hHard ceiling on any single scan’s wall-clock.
TIGERSTRIKE_SANDBOX_IMAGEtigergate/tigerstrike-sandbox-block:0.0.1Per-scan sandbox image — point at your mirror for a private registry.
TIGERSTRIKE_SANDBOX_PULL_TIMEOUT20mGrace for the sandbox image pull.
Service flags (tigerstrike-service, passed as command/args):
FlagDefaultPurpose
--port8085Local health / API port.
--workers4Max concurrent scans on this host (sample manifests set 2).
--modestandardstandard, or internal to lock down egress when scanning customer infra.
--output-root$TIGERSTRIKE_OUTPUT_ROOTArtifact directory.
--api-key$TIGERGATE_API_KEYWorker token (prefer the env var / secret).

Multiple workers / fleets

You can register multiple workers with the same org — give each a unique TIGERSTRIKE_WORKER_NAME in .env. The dashboard’s Pentest → Scanners page shows the fleet; when you create a scan, you pick which worker (or “any available”) runs it. Useful when:
  • You have multiple isolated networks and want one worker per network.
  • You want to scale by spinning up more workers; each pulls jobs independently.
  • You want a primary + standby for the same network.