Optional ~1.5 k LOC Python daemon that buffers metrics on the router and forwards push events through our APNs relay. Glint works without it; installing it adds continuous history and push notifications.
Capability-driven — the daemon detects what the hardware can report at startup and only collects what's available. On a Mudi 7 (battery + 2 SIMs + Wi-Fi 5 + 1 Eth WAN) that's:
battery.pct / .voltage_v / .current_a / .temp_c / .chargingsignal.sim1.{rsrp,rsrq,sinr,rssi} + sim2.*throughput.<dev>.{rx,tx}_bytes for every ifaceinterfaces.<dev>.up / .speed_mbpspings.<host>.rtt_mstunnels.wg.<peer>.{handshake_age_s,rx,tx}sys.{load1,load5,load15,mem_pct,cpu_temp_c}On a Wi-Fi-only model (Slate AX, Flint 2) the battery and signal series just don't exist — the app's UI already gates cards on data presence, so the Battery card hides itself without any client-side check.
One SQLite DB, three rolled-up tiers, ~220 KB total:
hot 15 s resolution → 1 h window raw samples
warm 1 m resolution → 6 h window min/avg/max
cool 5 m resolution → 24 h window min/avg/max
Hot tier in tmpfs, snapshots flush to overlayfs every 30 min.
From the app: Settings → Router daemon → Install on router…
shells out for curl | sh via the existing SSH session.
Manually:
ssh root@<router>
curl -fsSL https://glint.nakitel.com/glintd/install.sh | sh -
/etc/init.d/glintd status
ubus call mudi.glintd ping
/etc/init.d/glintd stop
/etc/init.d/glintd disable
rm -rf /etc/glintd /etc/init.d/glintd \
/usr/libexec/rpcd/mudi.glintd \
/usr/share/rpcd/acl.d/glintd.json
/etc/init.d/rpcd reload
MIT-licensed, hosted at github.com/Nakitel/glintd. Read it before installing if you'd like - it's small and intentionally boring.