AB-Labz Runner
Self-hosted compute engine for processing experiments in your infrastructure.
What is Runner
AB-Labz Runner is a Docker container that runs in your infrastructure, processes experiment data locally, and sends only aggregated statistical results to AB-Labz cloud.
Architecture
┌─────────────────────────────────┐
│ AB-Labz Cloud │
│ • Creates tasks │
│ • Receives aggregated │
│ statistics │
│ • Displays results in UI │
└────────────┬────────────────────┘
│
│ HTTPS (results only)
│ • p-value, CI, effects
│ • Counters (no user_id)
│ • SRM statistics
▼
┌─────────────────────────────────┐
│ AB-Labz Runner │
│ (in your infrastructure) │
│ │
│ • Polls tasks on schedule │
│ • Reads local CSV files │
│ • Statistical calculations │
│ • Sends results │
└────────────┬────────────────────┘
│
│ Read (read-only)
│
▼
┌─────────────────────────────────┐
│ Your Data (CSV files) │
│ /data/experiments/ │
│ │
│ • homepage_test.csv │
│ • checkout_v2.csv │
│ • onboarding_flow.csv │
└─────────────────────────────────┘What is Sent to Cloud
Sent:
- Statistics: p-value, z-score, t-statistic, confidence intervals
- Aggregated metrics: mean values, conversions by groups
- Counters: number of users in groups (no identifiers)
- SRM analysis: distribution by variants (no user_id)
- Metadata: metric names, number of days, dates
NOT Sent:
- Raw CSV files
- user_id identifiers
- Individual event records
- Email, phone, IP addresses
- Any PII (Personally Identifiable Information)
Quick Start
1. Get Runner Key
- Log in to AB-Labz Workbench
- Go to Runner section
- Click "Create Key"
- Copy the key (shown only once!)
2. Install Runner
You will receive archive runner-client-v1.x.x.zip with files:
runner-client-v1.x.x/
├── ab-labz-runner-v1.x.x.tar # Docker image
├── docker-compose.yml # Launch configuration
├── config.yaml # Runner settings
├── .env.example # Environment template
└── experiments/ # Folder for CSV (empty)3. Configure Environment
Unpack the archive runner-client-v1.x.x.zip. Copy the .env.example file and create .env from it. Edit the config.yaml file to match your settings.
Add your key to .env:
API_URL=https://workbench.ab-labz.com
RUNNER_KEY=abn_runner_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4. Specify Data Path
Edit docker-compose.yml:
services:
runner:
volumes:
# REPLACE with path to your CSV files!
- /path/to/your/experiments:/data/experiments:roImportant: use :ro (read-only) mode for security.
5. Load Image and Start
# Load image
docker load -i ab-labz-runner-v1.x.x.tar
# Start Runner
docker-compose up -dIn logs you should see:
AB-Labz Runner initialized
API URL: https://workbench.ab-labz.com
Experiments path: /data/experiments
Runner started successfully6. Check Status
In AB-Labz interface (Runner section):
- Status: Online
- Last activity: just now
- Discovered files: list of your experiments
Configuration
config.yaml
Runner operation settings:
# Path to CSV folder (inside container)
experiments_path: /data/experiments
# Task polling interval (seconds)
poll_interval: 60
# File check interval (seconds)
file_check_interval: 300When to change:
- Increase
poll_intervalto reduce load - Decrease
file_check_intervalfor more frequent updates
.env
Secret data:
# AB-Labz platform URL
API_URL=https://workbench.ab-labz.com
# Your Runner Key
RUNNER_KEY=abn_runner_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFile Monitoring
Runner automatically tracks file changes:
When changes detected:
- Sample size information is updated
- SRM metrics are recalculated
Update Process:
- You update file
experiment_001.csv(added new data for the day) - Runner detects file mtime change
- AB-Labz cloud receives notification
- New version is analyzed on next run
Check Interval: every 5 minutes (configurable in config.yaml)
Security
Recommendations:
Read-only Access
yamlvolumes: - /data/experiments:/data/experiments:roNetwork Access Restriction
- Runner should have HTTPS access only to
workbench.ab-labz.com - Configure firewall for outbound connections
- Runner should have HTTPS access only to
Regular Updates
- Update Docker image when new versions are released
- Monitor security notices
Management
Version Update
- Download new archive
runner-client-v1.x.x.zip - Load new image:bash
docker load -i ab-labz-runner-v1.x.x.tar - Update
docker-compose.yml(image version) - Restart:bash
docker-compose down docker-compose up -d
Troubleshooting
Runner Not Connecting
Error: Failed to send initial heartbeat
Solution:
- Check
RUNNER_KEYin.env - Ensure key starts with
abn_runner_ - Check access to
API_URL(ping, curl) - Check license status in AB-Labz
Files Not Detected
Error: Experiments path does not exist
Solution:
- Check path in
docker-compose.yml - Ensure folder exists on host
- Check Docker access rights to folder
- Path inside container:
/data/experiments
Tasks Not Processing
Error: Experiment file not found
Solution:
- File name =
<experiment_id>.csv - Check CSV format (user_id, variant, date)
- Ensure file is not empty
- Check encoding (UTF-8)
System Requirements
Minimum:
- Docker 20.10+
- Docker Compose 1.29+
- 1 GB RAM
- 1 CPU core
- 5 GB disk space
Recommended:
- 2 GB RAM
- 2 CPU cores
- 10 GB disk space
- Linux host (for production)
Supported Platforms:
- Linux (AMD64, ARM64)
- macOS (Intel, Apple Silicon)
- Windows (with WSL2)
