Local-first Android mirroring

Distributed phones. One live Hub.

pura turns developer-owned USB phones into a shared LAN device wall. ADB stays local; video and tap sessions route through the Hub.

Product preview Hub + Agents
pura Hub dashboard with Android devices and agent network
Hub online Agents reporting

Quickstart

Hub on Docker. Agents by CLI.

A minimal path from scattered USB devices to a browsable Android wall.

01

Run Hub

docker compose up -d
02

Register Agent

npx @nickname4th/pura-cli connect <hub-lan-ip>:8787 --name "Zhang San"
03

Publish device

open http://<hub-lan-ip>:8787
# publish from the web UI

Hub / Agent architecture

Shared visibility without shared USB.

The Hub owns discovery and session routing. Agents own physical devices, ADB, video capture, and local tap execution, then push control and video streams back to the Hub.

Hub Browser device wall Online inventory, session routing, video proxy, tap proxy
Agent Developer laptop ADB devices, screenrecord, local tap execution

Deployment

A small service for the office LAN.

The Hub runs as a containerized control plane. Agents stay native beside the hardware and initiate outbound connections.

docker compose up -d
open http://<hub-lan-ip>:8787
PURA_IMAGE=ghcr.io/liutianjie/pura:main docker compose up -d
# /data stores screenshots and doc bindings
DATA_DIR=data-hub pura-cli hub --host 0.0.0.0 --port 8787
Install

Lightweight Agent registration.

npx launches a local Agent, stores Hub settings, and reports authorized ADB devices.

npx @nickname4th/pura-cli --help
Control

Coordinate-accurate tap routing.

The Hub receives browser actions and sends them through the Agent's outbound control channel.

WS /ws/agents/:id/control
Discussion

Screenshots into Feishu docs.

Bind or choose one Docx document per device, then append saved screenshots with notes from the Hub UI.

PURA_FEATURE_LARK_DOCS=true
LARK_APP_ID=... LARK_APP_SECRET=...
Safety

LAN boundary by default.

Traffic stays between Hub, Agents, and browsers on the local network. No cloud relay or public tunnel is part of the path.

ROLE=hub PORT=8787

Open-source distribution

CLI on npm. Hub image on GHCR.

pura ships as the pura-cli package and a containerized Hub, with release automation for tagged versions.

npm run check npm pack --dry-run git tag v0.1.0