// TestLab · v1.5.7 · open-core
The core UDS client, in-process simulator, and campaign runner are free and Apache-2.0 — pip install xaloqi-tester, no license, no config. Pro adds real transports (SocketCAN, PCAN, Kvaser, DoIP, SOME/IP, SOVD), HTML reports, AI failure analysis, and a live dashboard.
xaloqi-sim --demo runs a full UDS conversation with zero hardware and zero config ·
source on GitHub →
// the library
Direct API — free, no license
async with UdsTester("vcan0",
rx_id=0x7DF, tx_id=0x7E8) as ecu:
await ecu.session(Session.EXTENDED)
await ecu.security_access(level=1)
vin = await ecu.read_did(0xF190)
await ecu.write_did(0xF187, b"PARTNUM0001")
await ecu.clear_dtcs(group=0xFFFFFF)
dtcs = await ecu.read_dtcs()
await ecu.session(Session.DEFAULT)
Campaign YAML
jobs:
eol_check:
description: End-of-line UDS validation
on_failure: continue
steps:
- action: session
value: extended
- action: security_access
level: 1
- action: read_did
did: "0xF190"
expect_ok: true
- action: write_did
did: "0xF187"
data: "50415254"
- action: clear_dtc
group: "0xFFFFFF"
- action: read_dtc
expect_nrc: null
Free — pip install xaloqi-tester
xaloqi-sim --demo runs a full UDS conversation with zero hardwareexpect_nrc, variable capture, JSON outputtestlab analyze — terminal summary of a run's resultsPro — real hardware and reporting
testlab explain reads the campaign result and explains each failure with the specific YAML contexttestlab serve opens a browser view of your ECU fleet, campaign history, and live run outputRun and report (Pro)
testlab-run \
--config diagnostics_config.yaml \
--campaign campaigns/eol_check.yaml \
--json reports/run.json
testlab report \
--results reports/run.json \
--out report.html
testlab explain \
--results reports/run.json
The built-in simulator and VirtualBus need zero hardware, zero config, and zero license. Try it before installing anything permanent:
# Zero-install demo
pipx run --spec xaloqi-tester xaloqi-sim --demo
# Or install and run a full campaign
pip install xaloqi-tester
testlab-run --config testlab_config.yaml \
--campaign campaigns/standalone_validation.yaml \
--job basic_validation --virtual --json reports/run.json
testlab analyze --results reports/run.json
No cloud. No auth. No hardware. No license.
VirtualBus, VirtualSomeIpBus, Docker ECU simulation, multi-ECU workspace, and a live dashboard — all shipped with Pro, no extra configuration.
# Start the ECU simulator
docker compose -f docker/docker-compose.yml up -d
# Run a mixed UDS + SOME/IP campaign
testlab-run \
--workspace testlab_workspace.yaml \
--campaign campaigns/someip_validation.yaml \
--job hvac_validation \
--someip-virtual \
--json reports/run.json
# Open the live dashboard
testlab serve --reports ./reports
# → http://127.0.0.1:8765
No cloud. No auth. No hardware.
// pricing
Core — Apache-2.0
€0/ forever
pip install xaloqi-tester — no license, no account, no time limit
xaloqi-sim)testlab analyze — terminal run summaryTestLab Pro
€990/yr · per developer
Adds real hardware, real protocols, and reporting on top of the free core
// also from xaloqi
// further reading