LuCI Mobile is an open-source Flutter client for OpenWrt routers. It talks to LuCI RPC so you can check router health, inspect clients and interfaces, scan Wi-Fi networks, and handle common admin tasks from a phone.
- Saves multiple router profiles and switches between them. A profile can include a fallback address for access from another network.
- Shows throughput, CPU load, memory use, uptime, wireless signal, and interface status on one dashboard.
- Lists clients for every saved router or only the selected router. Search by hostname, IP address, MAC address, or vendor.
- Shows wired and wireless interface details, traffic totals, addresses, radio state, and channel information.
- Scans nearby Wi-Fi networks and can connect a router radio as a station.
- Edits wireless networks and radios: SSID, security, channel, width and country code.
- Reserves a DHCP address for a client, or blocks one with a firewall rule.
- Wakes a sleeping device over the network.
- Manages port forwards, traffic rules, zones and static routes.
- Edits the hostname, timezone and description, and changes the router password.
- Starts, stops and restarts services, and configures SQM, adblock, UPnP and DDNS.
- Runs ping, traceroute and nslookup from the router, and reads its system and kernel logs.
- Keeps an activity feed of what changed, and on Android can notify about it in the background.
- Shows traffic history per client where the router records it.
- Reboots a router after confirmation.
- Follows the system theme or uses a selected light or dark theme.
Where the router allows it, configuration changes go through its own apply-with-rollback protocol: if the phone cannot confirm a change in time, the router puts the previous configuration back by itself. Some routers do not grant the permission that makes this work, and there the change is committed immediately; the app says so while it is going in, rather than letting you rely on a safety net that is not there.
Credentials and router profiles are stored through flutter_secure_storage. The app asks before trusting a self-signed HTTPS certificate. It does not include analytics, tracking, or advertising SDKs.
| Dashboard | Login | Clients | Client details |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Interfaces | Interface details |
|---|---|
![]() |
![]() |
Use Google Play, the Apple App Store, or IzzyOnDroid.
To run the source, install Flutter with Dart 3.8.1 or newer, then run:
git clone https://github.com/cogwheel0/luci-mobile.git
cd luci-mobile
flutter pub get
flutter runUseful checks:
flutter analyze
flutter testThe router must run OpenWrt with LuCI enabled. LuCI Mobile also needs the LuCI RPC and wireless information modules:
# OpenWrt using opkg
opkg update
opkg install rpcd-mod-luci rpcd-mod-iwinfo
# OpenWrt using apk
apk update
apk add rpcd-mod-luci rpcd-mod-iwinfo
/etc/init.d/rpcd restartCheck that the RPC object is available:
ubus list luci-rpc
ubus call luci-rpc getNetworkDevices '{}'- If the app cannot connect, open the same router address in a browser and check the scheme, port, firewall, and VPN route.
- If login fails, verify the username, password, and administrator permissions in LuCI.
- If the dashboard is empty, install the RPC modules above, restart
rpcd, and run the twoubuschecks. - Accept a self-signed certificate only after checking that its fingerprint belongs to your router.
See CONTRIBUTING.md for the development workflow. Bug reports and focused pull requests are welcome.
LuCI Mobile is licensed under GPL-3.0. It is an independent project and is not affiliated with OpenWrt.
Thanks to the OpenWrt and Flutter communities, the project contributors and testers, and OpenWrtManager for early inspiration.





