BLE bugs are platform-specific. Prove your peripheral works on real hardware - from one page.

GattLab dispatches a plain-YAML test contract to real Windows, Android, and iOS devices sitting next to your peripheral, and reports back a step-by-step PASS/FAIL - no walking between devices, no GATT commands to remember.

The problem with testing BLE peripherals today

"Works on Android, fails on iOS"

Platform-specific BLE stack differences surface late, often only once QA or a customer hits them on a device you didn't test.

Verifying a firmware change means walking around

A one-line firmware fix still means physically visiting every test device and tapping a button to re-check it.

Results are screenshots and memory

Without a shared, comparable result format, "did this pass last week" is a Slack search, not a query.

How it works

1

Install & log in

Install GattLab Agent on each Windows PC or Android phone you test with, and log in with your GattLab account.

2

Write a contract

Describe the expected behavior - advertised name, required service, characteristic writes - in plain YAML.

3

Dispatch & read results

Run it against one device or a whole fleet and watch step-by-step PASS/FAIL come back live.

GattLab Manager (cloud) Agent - Windows Agent - Android Agent - iOS Peripheral under test

Only one agent talks to the peripheral at a time - fleet runs are dispatched sequentially, since most BLE peripherals only support a single connection.

What it checks today

Discovery & connection

Advertises with the expected name, and a connection succeeds within a configurable timeout.

Required service

The expected GATT service is present after connecting - the actual UUID mismatch is reported when it isn't.

Characteristic reads/writes

Write bytes to a characteristic and assert success, or assert an expected response via a read-back or a notification.

See the full contract language reference →

Honest scope

This is an early MVP, not a full protocol analyzer.

Not yet supported: advertising interval/RSSI assertions, MTU and connection-parameter checks, indications and descriptor reads, background execution, and multi-connection scenarios. A BLE sniffer mode and a drag-and-drop simulator mode are on the longer-term roadmap but not part of this build. See the contract reference for the exact current step catalogue.

Get GattLab Agent

Download the Agent app

Self-serve downloads for all three platforms are coming soon. In the meantime, contact us and we'll send you a sideloadable build directly.

  • Windows Coming soon
  • Android Coming soon
  • iOS Coming soon

Contact us for a sideloadable build

Point it at this Manager

When you log in on the Agent app, use this Manager's address:

http://gattlab.dev

See it running on a real device

GattLab Agent running on an Android phone, connected to the Manager and waiting for a job
The Agent app on a real Android phone, connected and waiting for a job.
GattLab Agent showing a PASS result with 6 of 6 checks passed for a contract dispatched from the Manager
A contract dispatched from the Manager, running live on the device - 6 of 6 checks passed.