ISO 14229 UDS on Zephyr and FreeRTOS. YAML-configured. AI-assisted. CI-verified.
CAN and Ethernet. From a single ECU to a multi-ECU virtual vehicle bench.
GPL v2 runtime · always free · offline license · no cloud dependency
// the problem
Building a UDS diagnostics stack from scratch on Zephyr or FreeRTOS takes four to eight engineer-weeks. Session state machines, ISO-TP framing, security access, DID dispatch, DTC persistence, ASIL-B safety wrappers, test coverage. Most teams do this once per project, inconsistently, with no reuse.
Testing it is harder. Running UDS campaigns in CI — across CAN, DoIP, and SOME/IP, against real hardware and simulators, with structured reports and regression tracking — has no good lightweight option. Until now.
// how it works
diagnostics_config.yaml
schema_version: 1
metadata:
ecu_name: body_controller
ecu:
transport: doip
doip:
logical_address: "0xE400"
port: 13400
dids:
- id: "0xF190"
name: VIN
data_length: 17
access: [read]
min_session: default
read_security_level: 0
- id: "0xF187"
name: PartNumber
data_length: 11
access: [read, write]
min_session: extended
write_security_level: 1
dtcs:
- code: "0xD00101"
description: Voltage above threshold
severity: check_at_next_halt
python3 tools/codegen.py \
--config diagnostics_config.yaml \
--safety-wrappers --asil-level B \
--test-gen --sovd
→ C/H source · ASIL-B wrappers · pytest suite · SOVD descriptor
testlab-run \
--config diagnostics_config.yaml \
--campaign campaigns/eol_check.yaml \
--json reports/run.json
→ HTML report · trend chart · AI failure analysis
xaloqi.com/cloud
No installation. Describe your ECU
in plain English.
→ Validated YAML + C source +
pytest suite + test run.
// products
The diagnostics runtime. ISO 14229 UDS on Zephyr and FreeRTOS — YAML-configured, ASIL-B ready, DoIP-enabled, SOVD-ready.
--sovd flag — generates OpenSOVD 1.0 CDA descriptor alongside your firmwareGPL v2 runtime is public. Commercial license adds 17 codegen templates, testgen, AI CLI, MCP server, GUI dashboard, VS Code extension, and 7 specialist examples.
The validation engine. Multi-ECU campaign runner with UDS, DoIP, SOME/IP, and SOVD — hardware-optional, CI-native.
expect_nrc for negative response validationtestlab explain tells you why the step failed and how to fix ittestlab serve opens a browser view of your ECU fleet and campaign historydiagnostics_config.yaml automaticallyasync 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)
The entry point. Describe your ECU in plain English. Get validated YAML, generated C source, and a simulated test campaign — all in the browser. No Zephyr SDK. No Python. No Docker. Launching soon.
VirtualBus, VirtualSomeIpBus, Docker ECU simulation, multi-ECU workspace, and a live dashboard — all shipped, 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
EDS — diagnostics runtime
Community
Free
GPL v2 · always free
Developer
€690/yr · per developer
Everything in Community, plus:
--sovd — OpenSOVD 1.0 CDA codegenProfessional
€1,990/yr · per developer
Everything in Developer, plus:
TestLab — validation engine
TestLab
€990/yr · per developer
Full xaloqi-tester library, all transports
Cloud — browser workspace · launching soon
Free
€0
3 total generations
Starter
€19/mo
or €182/yr (save 20%)
Pro
€49/mo
or €470/yr (save 20%)
Team
€149/mo
or €1,430/yr · 5 seats
AI features require your own Anthropic API key. No AI cost ever charged to Xaloqi.
// faq
Yes. The runtime stack (core/, transport/, config/, platform/) is GPL v2. It includes CAN and DoIP transports, Zephyr and FreeRTOS platform layers, and 37 unit tests. The commercial license covers the codegen templates, tooling, and safety documentation.
No. TestLab works standalone against any UDS ECU — copy testlab_config.yaml, fill in your CAN IDs or DoIP address, and run campaigns. EDS integration is automatic when a diagnostics_config.yaml is present, but it's never required.
Linux SocketCAN, PEAK PCAN USB (Windows + Linux), Kvaser (Windows + Linux), DoIP over TCP, SOME/IP, and SOVD REST. In CI: VirtualBus and VirtualSomeIpBus run in-process — no kernel modules, no CAN hardware, no Docker required.
Cloud is the browser-native workspace over EDS and TestLab. Describe your ECU in plain English, get a validated diagnostics_config.yaml, generate C source and a pytest suite, and run a simulated UDS test campaign — all without installing anything. The free tier gives you 3 generations with no credit card required. Cloud is launching soon — join the waitlist to be notified.
Yes for EDS and TestLab. The key is cached locally on first activation — no internet calls during builds or test runs. Required for air-gapped automotive development environments. Cloud is SaaS and requires a connection.
The Python library and campaign runner work on Windows. SocketCAN requires Linux, but PCAN, Kvaser, DoIP, SOME/IP, and SOVD work on Windows natively.
14-day grace period after expiry — runs continue with a renewal warning printed to output. After the grace period, the CLI exits with a license error. Renew and re-activate with one command.
Yes. EDS Developer and Professional include arxml_parser.py — AUTOSAR 4.x ECU Extract → diagnostics_config.yaml, standard library only, no external dependencies. The output is directly usable by codegen.py. ARXML import is also available in Xaloqi Cloud on Pro and Team plans.