Skip to main content

Docker Compose Deployment Guide

This guide walks through deploying the AgentSuite-Blue protection stack on a single host using Docker Compose. This guide covers integrating the target agent through Virtue Gateway. Hook-based integration is simpler and requires fewer Docker images. All services run as containers; no Kubernetes or external infrastructure is required.

Prerequisites

RequirementDetails
DockerDocker Engine 24+ with Docker Compose v2
Python3.10 or higher (for running the bundled setup scripts)
RAM16 GB minimum (32 GB recommended)
Disk~20 GB free (for Docker images)
NVIDIA GPURequired for Action Guard (16 GB+ VRAM). Without a GPU, set ACTION_GUARD_ENABLED=True in .env to enable the guard model.
Registry credentialsA GCP service-account key file provided by your Virtue AI representative

Container Images

All images are hosted in us-docker.pkg.dev/customer-docker-virtueai/<your-tenant>/ and fall into two categories.

Protection Service

Core product images that secure agent tool calls:

ImageDescription
protection/mcp-gatewayAgent gateway API and MCP endpoint
protection/mcp-gateway-workerBackground task worker
protection/mcp-gateway-schedulerScheduled task runner
protection/action-guardTool-call safety evaluator
protection/action-guard-workerAction Guard background worker
protection/action-guard-schedulerAction Guard scheduler
protection/virtue-authAuthentication and user management
protection/dashboardVirtueGuard management UI
protection/vllm-topicguardLocal LLM server backing Action Guard (requires GPU)
protection/postgresPostgreSQL for gateway and auth databases
protection/redisRedis for the gateway task queue

Test Suite Sandbox (optional)

Only required if you also start the bundled demo with --demo:

ImageDescription
test-suite/attack-managerTest orchestrator
test-suite/sandbox-apiSandbox backend APIs (Gmail, PayPal, Slack, Zoom, Calendar, …)
test-suite/sandbox-uiSandbox frontend UIs
test-suite/sandbox-postgresSandbox databases
test-suite/atlassian-apiJira API backend
test-suite/mailpitEmail server for the Gmail sandbox

Deployment process

Step 1: Extract the Code Bundle

Your Virtue AI representative will provide a bundle (e.g. agentsuite-docker.zip) containing the Docker Compose files, setup scripts, and example agent.

unzip agentsuite-docker.zip
cd agentsuite-docker

Step 2: Authenticate to the Image Registry

Log in to the GCP Artifact Registry using the service-account credentials provided with your bundle:

docker login -u _json_key --password-stdin https://us-docker.pkg.dev < serviceaccount.json

For details on the credential format, see the GCP Artifact Access Guide.

Step 3: Configure the Environment

Create a .env file in the project root with your model and Action Guard settings:

# Backbone model used by the demo agent
MODEL=bedrock/global.anthropic.claude-sonnet-4-6
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION_NAME=us-east-1

# Set to false if no NVIDIA GPU is available
ACTION_GUARD_ENABLED=true

Step 4: Start the Stack

Run the setup script. By default it starts only the protection stack; pass --demo to additionally start the test sandbox.

# Protection stack only (gateway, auth, dashboard, DB, Redis, Action Guard)
bash setup.sh

# Protection stack + demo sandbox
bash setup.sh --demo

Under the hood the script composes two files:

  • docker-compose.yml — protection stack (always started)
  • docker-compose.demo.yml — test sandbox (started with --demo)

Step 5: Verify the Deployment

Once setup finishes, the dashboard is available at http://localhost:23000 with the default credentials admin / admin. The MCP gateway listens on http://localhost:22001 and the auth service on http://localhost:22002.

Check container health:

docker compose ps

All protection services should report Up (healthy).

Connecting Your Agent

After the gateway and guard model are running, point your agent at the gateway's MCP endpoint instead of the upstream MCP servers — see the Hook Integration docs for framework-specific examples (Google ADK, OpenAI Agents SDK, Claude Agent SDK, LangChain, Strands, Microsoft 365). The values you'll need (GATEWAY_SERVER_URL, ACCESS_TOKEN) are written to .env by setup.sh and are also visible in the dashboard under Gateways → <your gateway>.