| name | router-control |
| description | Universal home network discovery and device control via router. Use when: (1) discovering devices on local network, (2) SSH into a router, (3) managing WireGuard/VPN on a router, (4) setting up AdGuard Home / DNS filtering, (5) controlling smart home devices found via DHCP, (6) checking device online status. Works with any router (OpenWrt, GL.iNet, ASUS, TP-Link, etc.) โ auto-detects model and capabilities. Designed for local Mac/Linux deployment with OpenClaw.
|
Router Control
Universal home router discovery and device management. Zero config โ auto-detects your router, finds all devices, identifies them from community-maintained YAML profiles.
Quick Start
python3 cli.py discover
python3 cli.py connect
python3 cli.py devices
python3 cli.py supported
python3 cli.py commands lg-webos
python3 cli.py health
How It Works
- discover.sh โ Finds router via default gateway, detects fake IPs (Clash TUN), probes SSH/HTTP
- connect.sh โ Establishes SSH (tries key โ password โ common defaults)
- devices.sh โ Reads DHCP leases, matches against
devices/**/*.yaml profiles via registry.py
- registry.py โ Auto-scans all YAML in
devices/, provides identify(mac, hostname) matching
Device Profiles
Community-maintained YAML files in devices/<type>/:
devices/
router/ OpenWrt, GL.iNet, ASUS Merlin, TP-Link
tv/ LG webOS, Samsung Tizen, Roku
ir-remote/ BroadLink, Tuya IR
speaker/ Google Nest, Amazon Echo
camera/ Reolink, Hikvision
ac/ Generic IR AC
iot/ ESP/Tuya, Tasmota
Each YAML defines: device (metadata), discovery (MAC/hostname/mDNS), connection (protocol/auth), commands (what the device can do).
See devices/_schema.yaml for the template. Full schema: references/device-schema.md.
Adding a New Device
- Create
devices/<type>/my-device.yaml (copy from _schema.yaml)
- Fill in discovery (MAC prefix + hostname pattern), connection, commands
- Test:
python3 cli.py supported should list it
- Submit PR
See references/contributing.md for the full guide.
Shell Scripts (Advanced)
Direct router access when you need raw control:
bash scripts/run.sh "wg show"
bash scripts/ping.sh "LGwebOSTV"
bash scripts/health.sh
Troubleshooting
See references/troubleshooting.md for:
- Fake IPs (VPN/Clash TUN masquerading as router)
- ISP port blocking on WireGuard
- SSH auth failures with Dropbear
- Double NAT detection
- Router memory pressure