Setup & Deployment

Karate Agent requires only Java 21+ and Docker — tools already present on most developer machines.

Quick Setup

# 1. Pull the worker image
docker pull karatelabs/karate-agent:latest

# 2. Start the grid server
java -jar veriquant.jar grid --port 4444

# 3. Open the dashboard
open http://localhost:4444

That’s it. One jar, one Docker image. No microservices, no databases, no message queues.

Requirements

Component Requirement
Java 21 or later
Docker Docker Desktop (macOS/Windows) or Docker Engine (Linux)
Disk ~2GB for the karate-agent Docker image
RAM ~1GB per concurrent browser session
Network Docker socket access (/var/run/docker.sock)

LLM Configuration (for Autonomous Mode)

Set environment variables before starting the grid:

# OpenRouter (recommended — 100+ models)
export KARATE_LLM_MODEL=openrouter/anthropic/claude-sonnet-4-6
export KARATE_LLM_API_KEY=sk-or-...

# Anthropic (direct)
export KARATE_LLM_MODEL=anthropic/claude-haiku-4-5
export KARATE_LLM_API_KEY=sk-ant-...

# Ollama (local — no API key, no cloud)
export KARATE_LLM_MODEL=ollama/gemma3
# Ensure Ollama is running: ollama serve

Interactive mode does not require an LLM on the grid — your client-side agent provides the intelligence.

Testing Against Localhost

On a developer machine, worker containers can reach your local apps via host.docker.internal:

agent.go('http://host.docker.internal:3000')

Run the grid alongside your dev server — test your changes before pushing.

Team Server Deployment

For a shared team setup:

  1. Run the grid on a persistent machine (Mac Mini, EC2 instance, etc.)
  2. Share the dashboard URL with the team
  3. Point the flows/ directory at a git repository for collaboration
  4. Configure LLM credentials centrally
# Start with flows directory mounted
java -jar veriquant.jar grid \
  --port 4444 \
  --flows /path/to/flows-repo

CI/CD Integration

The REST API integrates with any pipeline that can run curl:

# GitHub Actions
- name: Run browser tests
  run: |
    JOB=$(curl -s -X POST $GRID_URL/api/jobs \
      -H "Content-Type: application/json" \
      -d '{"prompt":"Run smoke test", "flowFiles":["e2e/smoke.js"]}')
    JOB_ID=$(echo $JOB | jq -r .sessionId)
    while true; do
      STATE=$(curl -s $GRID_URL/api/jobs/$JOB_ID | jq -r .state)
      [ "$STATE" = "completed" ] && break
      [ "$STATE" = "failed" ] && exit 1
      sleep 10
    done

Session Recording

Enable video recording for audit trails:

java -jar veriquant.jar grid \
  --port 4444 \
  --recording true

Recordings are H.264 at 8fps with seeking support. Stored alongside session data in the data/ directory.

Data Persistence

Session data (transcripts, reports, screenshots, recordings) persists in the data/ directory:

data/
├── sessions/
│   ├── abc123/
│   │   ├── transcript.json
│   │   ├── report.html
│   │   ├── screenshots/
│   │   └── recording.mp4
│   └── def456/
│       └── ...

This directory survives grid restarts. Back it up as needed.