a11y-bridge

Control Android devices via Accessibility Service HTTP bridge. 100x faster than screencap + uiautomator dump. Read UI tree in 50ms, click elements by text/id/description. Use when automating Android apps, controlling a phone via ADB, or building an AI-powered phone agent. Replaces the slow screenshot → parse → coordinate-tap cycle with instant semantic access.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "a11y-bridge" with this command: npx skills add 4ier/a11y-bridge/4ier-a11y-bridge-a11y-bridge

A11y Bridge — Android Accessibility HTTP Bridge

Control Android devices through a 16KB Accessibility Service that exposes the live UI tree over HTTP (localhost:7333). ~50ms to read any screen, click by text without coordinate math.

Prerequisites

  • Android device connected via USB with USB debugging enabled
  • ADB installed and accessible in PATH
  • Android SDK (build-tools 34, platform android-34) — only needed to build from source

Setup

Install pre-built APK

Download the latest APK from Releases, then:

# Install
adb install openclaw-a11y.apk

# Enable accessibility service
adb shell settings put secure enabled_accessibility_services \
  com.openclaw.a11y/.ClawAccessibilityService
adb shell settings put secure accessibility_enabled 1

# Forward port
adb forward tcp:7333 tcp:7333

# Verify
curl http://localhost:7333/ping

Build from source (optional)

chmod +x build.sh && ./build.sh

Usage

Read screen (~50ms)

# Full UI tree
curl http://localhost:7333/screen

# Compact mode (only interactive/text elements)
curl 'http://localhost:7333/screen?compact'

Returns JSON with all UI elements: text, bounds, clickable, editable, etc.

Click by text

# Click element containing "Settings"
curl -X POST http://localhost:7333/click \
  -H "Content-Type: application/json" \
  -d '{"text": "Settings"}'

# Click by resource ID
curl -X POST http://localhost:7333/click -d '{"id": "com.app:id/send"}'

# Click by content description
curl -X POST http://localhost:7333/click -d '{"desc": "Navigate up"}'

Tap coordinates

curl -X POST http://localhost:7333/tap -d '{"x": 540, "y": 960}'

Health check

curl http://localhost:7333/ping

Workflow

  1. Read: curl http://localhost:7333/screen → JSON with all UI elements
  2. Find: Locate target element by text/role in the JSON response
  3. Act: curl -X POST /click -d '{"text":"Send"}' → click by text, no coordinates
  4. Repeat

Multi-device support

When multiple devices are connected, specify the target with -s <serial> for all ADB commands:

adb -s <serial> forward tcp:7333 tcp:7333

API Reference

EndpointMethodDescription
/pingGETHealth check
/screenGETFull UI tree as JSON. Add ?compact for interactive elements only
/clickPOSTClick by text, id, or desc (JSON body)
/tapPOSTTap coordinates x, y (JSON body)

Performance

uiautomator dumpA11y Bridge
Read UI3-5 seconds~50ms
ClickCalculate bounds → input tap x y{"text": "OK"}
Full cycle5-8 seconds100-200ms

Fallback

If the A11y Bridge service is not running (check with /ping), fall back to traditional ADB commands:

adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml
adb shell input tap <x> <y>

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

notion-cli

No summary provided by upstream source.

Repository SourceNeeds Review
25-4ier
General

neo

No summary provided by upstream source.

Repository SourceNeeds Review
11-4ier
Automation

termux-api

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

offload2

No summary provided by upstream source.

Repository SourceNeeds Review