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:
- Run the grid on a persistent machine (Mac Mini, EC2 instance, etc.)
- Share the dashboard URL with the team
- Point the
flows/directory at a git repository for collaboration - 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.