A complete standalone web interface for OpenWrt routers. Not a LuCI theme—pure vanilla JavaScript SPA using OpenWrt's native ubus API.
scp -r moci/* [email protected]:/www/moci/
# Access at http://192.168.1.1/moci/
|
|
Download the package for your architecture from Releases.
OpenWrt 24.10 and earlier (opkg):
wget https://github.com/HudsonGraeme/MoCI/releases/latest/download/moci_VERSION_ARCH.ipk
opkg install moci_VERSION_ARCH.ipkOpenWrt 25.12+ (apk):
wget https://github.com/HudsonGraeme/MoCI/releases/latest/download/moci_VERSION_ARCH.apk
apk add --allow-untrusted moci_VERSION_ARCH.apkAvailable architectures: x86_64, mipsel_24kc, mips_24kc, aarch64_cortex-a53, aarch64_cortex-a72, arm_cortex-a7_neon-vfpv4, arm_cortex-a9_vfpv3-d16, arm_cortex-a15_neon-vfpv4
Replace VERSION_ARCH with your specific file from the releases page.
Quick start:
scp -r moci/* [email protected]:/www/moci/
scp rpcd-acl.json [email protected]:/usr/share/rpcd/acl.d/moci.json
ssh [email protected] "/etc/init.d/rpcd restart"First time setup (if you get 404):
ssh [email protected]
uci set uhttpd.main.home='/www'
uci commit uhttpd
/etc/init.d/uhttpd restartWhat the ACL grants:
- WAN/LAN status display on dashboard
- Bandwidth monitoring
- Device count
- Package list viewing in Software tab
Access at http://192.168.1.1/moci/ and login with your root credentials.
To build the ipk package yourself:
# In OpenWrt buildroot
git clone https://github.com/HudsonGraeme/MoCI.git package/moci
make package/moci/compileThe package will be in bin/packages/*/base/moci_*.ipk (24.10) or bin/packages/*/base/moci-*.apk (25.12+)
Uses OpenWrt's native authentication system. Same security model as LuCI:
| Feature | MoCI | LuCI |
|---|---|---|
| Authentication | ubus sessions | ubus sessions |
| Authorization | rpcd ACLs | rpcd ACLs |
All operations validated server-side. No privilege escalation paths.
Auto-deploy on save:
# QEMU VM
pnpm dev
# Physical router
pnpm dev:physical 192.168.1.1Project structure:
moci/
├── index.html - Application shell
├── app.css - Styling
└── js/
├── core.js - Core functionality
└── modules/ - Feature modules (dashboard, network, system, vpn, services)
Adding features:
const [status, result] = await this.ubusCall('system', 'info', {});Chrome 90+ • Firefox 88+ • Safari 14+ • Any modern browser
MIT
