Skip to content

Releases: LinDevHard/wadb

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 16:55

wadb v1.3.0 — agent-friendly CLI

This release adds a stable automation contract for AI agents and scripts while keeping the existing interactive workflow intact. Agents can now discover what wadb can do, inspect Android devices, select targets safely, and interpret failures without parsing terminal prose.

Highlights

  • Versioned JSON output: use --output json to receive exactly one schema-versioned response object on stdout. Progress and diagnostics stay on stderr.
  • Safe non-interactive operation: --non-interactive and WADB_NON_INTERACTIVE prevent terminal prompts. Pairing codes are accepted through redirected stdin and never need to appear in command arguments.
  • Machine-readable discovery: wadb capabilities describes commands, side effects, interaction requirements, stdin usage, stable error codes, and the response contract.
  • Published JSON Schema: inspect the embedded schema with wadb schema or use schemas/wadb-output-v1.schema.json from the release archive.
  • Actionable errors: structured errors include stable codes, a suggestion, retryable, and requires_user_action metadata.
  • Safer device selection: structured connect refuses to choose silently when multiple devices are found. Pass --device or explicitly use --all.
  • Agent Skill included: release archives contain skills/wadb/SKILL.md, which teaches compatible agents how to use wadb safely.
  • Claude Code support: the archive is a valid Claude Code plugin and includes the /wadb:wadb skill.

Quick start for agents

wadb capabilities --non-interactive --output json
wadb doctor --non-interactive --output json
wadb devices --non-interactive --output json
wadb connect --device <id-or-address> --non-interactive --output json

For pairing with Android's six-digit-code dialog:

wadb pair <host:port> --non-interactive --output json

Provide the six-digit code through redirected stdin, not as a command argument, environment variable, log entry, or chat message. First-time QR pairing remains intentionally interactive.

Claude Code

Extract a release archive and load it for one session:

claude --plugin-dir /path/to/wadb

The skill is available as /wadb:wadb and may also be selected automatically when the request matches its description.

Compatibility

  • The v1.2 --json array output remains supported for existing devices, connect, and disconnect integrations.
  • New integrations should use --output json and accept unknown fields within schema version 1.
  • wadb still delegates the TLS pairing handshake to the locally installed Android platform-tools adb.
  • Windows support remains experimental.

Install or upgrade

brew update
brew install lindevhard/tap/wadb
# or, if already installed:
brew upgrade wadb

Release archives are available below for macOS, Linux, and Windows, with SHA-256 checksums in checksums.txt.

Full changelog: v1.2.0...v1.3.0

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 13:25

What’s new in v1.2.0

This release introduces the new Device Manager, pairing by code, multi-device workflows, and safer pairing-code handling.

Device Manager

  • Added wadb devices to list connected and discovered Android devices.
  • Combines adb devices -l, direct mDNS discovery, and the adb mDNS cache.
  • Shows device ID, address, status, transport, model, and mDNS instance.
  • Merges USB and Wi-Fi entries when they belong to the same device.
  • Added machine-readable output with wadb devices --json.

Connect and disconnect

Connect a specific device by serial, address, host, or mDNS instance:

wadb connect --device RF8M1234ABC

Connect every discovered device paired with this host:

wadb connect --all

Disconnect one device or every wireless device:

wadb disconnect --device 192.168.1.20:40002
wadb disconnect --all

The connect and disconnect commands also support --json.

Pairing by code

As an alternative to scanning a QR code, use the address and six-digit code displayed by Android:

wadb pair 192.168.1.20:37123
Enter pairing code:

After pairing, wadb automatically discovers the device’s separate connection endpoint and connects to it.

Improvements

  • Flags can now appear before or after commands.
  • Added --scan-timeout for Device Manager discovery.
  • Added environment variables for the new options.
  • Improved IPv6 support, including scoped link-local addresses.
  • Added shell completions and man-page documentation for all new commands.

Security

Pairing codes are now passed to adb pair through standard input instead of appearing in process arguments.

Install or upgrade

brew update
brew upgrade wadb

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 15 Aug 14:38

Pairing a phone was already one command. Now getting it back is too: after the
first pairing, wadb connect reconnects a device without printing a QR code at
all — useful every time a phone reboots and drops off adb devices.

Added

  • wadb connect — reconnect a device already paired with this host, no QR
    code involved. Pairing survives reboots and Wi-Fi changes; the port Android
    listens on does not, and this command finds the new one.
  • --iface (env WADB_IFACE) — browse mDNS on a single network interface.
    Reach for this when discovery times out on a machine running a VPN, a
    container bridge, or a second NIC: they can swallow the multicast traffic
    before it gets to your Wi-Fi interface. An unusable name fails immediately
    instead of looking like a network timeout.
  • wadb doctor now lists the interfaces worth passing to --iface, and
    validates one when given.
  • --qr-invert (env WADB_QR_INVERT) — for terminals with a light
    background, where the default rendering comes out inside out and phones
    refuse to scan it.
  • --qr-sixel (env WADB_QR_SIXEL) — draw the QR code as an image on
    terminals that speak sixel (iTerm2, WezTerm, foot, mlterm). Carries its own
    black-on-white palette, so it scans under any color theme.
  • A man page and shell completions for bash, zsh, and fish, shipped in the
    release archives and installed by the Homebrew formula.

Fixed

  • --qr-ascii produced an unscannable code. It drew one character per
    module, and since a terminal cell is about half as wide as it is tall, the
    result was twice as tall as it was wide — the exact shape cameras fail on.
    The flag meant for terminals that render half blocks poorly now doubles each
    module and stays square.
  • The Homebrew formula's test block compared wadb --version against a
    v-prefixed string the binary never prints, so brew test wadb could not
    pass.

Changed

  • Discovery falls back to adb mdns services. A successful pair followed by
    a silent connect announce used to end the run with an error, even when adb
    itself could already see the device — it runs a separate mDNS implementation
    and caches announces from before wadb started. Both the pairing and the
    reconnect flow now ask adb before giving up.
  • github.com/miekg/dns moved from 1.1.27 (2020) to 1.1.72, and
    golang.org/x/net to 0.56.0.
  • CI gained gofmt, golangci-lint, and govulncheck; Dependabot keeps Go modules
    and GitHub Actions current.
  • Changed name release archives with the version last

No breaking changes — every existing flag, environment variable, and script
keeps working.

Install

brew upgrade wadb          # or: brew tap LinDevHard/tap && brew install wadb
go install github.com/lindevhard/wadb@latest

Prebuilt archives for macOS, Linux, and Windows are attached below, with
checksums.txt for verification.

Full changelog: v1.0.0...v1.1.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 14 Aug 21:00
448ebab

Pairing a phone was already one command. Now getting it back is too: after the
first pairing, wadb connect reconnects a device without printing a QR code at
all — useful every time a phone reboots and drops off adb devices.

Added

  • wadb connect — reconnect a device already paired with this host, no QR
    code involved. Pairing survives reboots and Wi-Fi changes; the port Android
    listens on does not, and this command finds the new one.
  • --iface (env WADB_IFACE) — browse mDNS on a single network interface.
    Reach for this when discovery times out on a machine running a VPN, a
    container bridge, or a second NIC: they can swallow the multicast traffic
    before it gets to your Wi-Fi interface. An unusable name fails immediately
    instead of looking like a network timeout.
  • wadb doctor now lists the interfaces worth passing to --iface, and
    validates one when given.
  • --qr-invert (env WADB_QR_INVERT) — for terminals with a light
    background, where the default rendering comes out inside out and phones
    refuse to scan it.
  • --qr-sixel (env WADB_QR_SIXEL) — draw the QR code as an image on
    terminals that speak sixel (iTerm2, WezTerm, foot, mlterm). Carries its own
    black-on-white palette, so it scans under any color theme.
  • A man page and shell completions for bash, zsh, and fish, shipped in the
    release archives and installed by the Homebrew formula.

Fixed

  • --qr-ascii produced an unscannable code. It drew one character per
    module, and since a terminal cell is about half as wide as it is tall, the
    result was twice as tall as it was wide — the exact shape cameras fail on.
    The flag meant for terminals that render half blocks poorly now doubles each
    module and stays square.
  • The Homebrew formula's test block compared wadb --version against a
    v-prefixed string the binary never prints, so brew test wadb could not
    pass.

Changed

  • Discovery falls back to adb mdns services. A successful pair followed by
    a silent connect announce used to end the run with an error, even when adb
    itself could already see the device — it runs a separate mDNS implementation
    and caches announces from before wadb started. Both the pairing and the
    reconnect flow now ask adb before giving up.
  • github.com/miekg/dns moved from 1.1.27 (2020) to 1.1.72, and
    golang.org/x/net to 0.56.0.
  • CI gained gofmt, golangci-lint, and govulncheck; Dependabot keeps Go modules
    and GitHub Actions current.

No breaking changes — every existing flag, environment variable, and script
keeps working.

Install

brew upgrade wadb          # or: brew tap LinDevHard/tap && brew install wadb
go install github.com/lindevhard/wadb@latest

Prebuilt archives for macOS, Linux, and Windows are attached below, with
checksums.txt for verification.

Full changelog: v1.0.0...v1.1.0

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 02 Jun 13:57

wadb v1.0.0 — first stable release

Pair Android devices over ADB Wi-Fi straight from your terminal: scan a QR with the phone, get an adb connect ready to go.

Highlights

  • Smarter discovery — prefers _adb-tls-connect._tcp endpoints announced by the same host that did the pairing, and prints the connected device name when Android system properties are available.
  • More UX knobs
    • --adb — force a specific adb binary
    • --pair-only — stop after successful pairing, skip adb connect
    • --qr-ascii — fallback QR rendering for terminals that mangle the compact one
    • Env-var equivalents for every UX flag and timeout
  • Releases on rails — switched to GoReleaser for archives, SHA-256 checksums and GitHub Releases; release workflow now updates the Homebrew tap automatically.

Install

brew install lindevhard/tap/wadb
# wadb needs adb on PATH:
brew install --cask android-platform-tools

Or grab a binary from the assets below.

Quick start

wadb              # scan the QR on your phone → device is paired & connected
wadb --pair-only  # just pair, don't connect
wadb doctor       # diagnose adb / mDNS issues

Notes

  • Windows support is marked experimental until adb discovery is verified there.

Full changelog: CHANGELOG.md · diff: v0.2.0...v1.0.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 24 May 22:53

Improves diagnostics and reliability for Android wireless pairing.

Added

  • Added --pair-timeout and --connect-timeout flags.
  • Added --verbose mDNS discovery logging.
  • Added wadb doctor for local adb and mDNS diagnostics.
  • Added a platform-tools version warning for older adb installations.
  • Documented diagnostics options and linked the Android Makers/droidCon 2026 ADB Wi-Fi 2 talk.

Changed

  • Try multiple discovered _adb-tls-connect._tcp endpoints after pairing instead of only the first one.
  • Improved pairing and connect timeout errors with actionable network and mDNS hints.
  • Improved wadb doctor output when adb mdns services reports no discovered services.
  • Added the demo GIF to the README.

Notes

wadb still delegates the actual TLS pairing handshake to adb pair; the new diagnostics are meant to make Wi-Fi, mDNS, and platform-tools issues easier to spot.

Full Changelog: https://github.com/LinDevHard/wadb/blob/main/CHANGELOG.md

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 15 May 17:01

Full Changelog: v0.1.0...v0.1.1