mrkeyoor.com_
Fri 16 Oct 18:52 UTC
Self-Hostedevaluationupdated 15 Oct 2026

unifi-toolkit review

UI Toolkit is a self-hosted dashboard for tracking UniFi devices, watching gateway threats, and changing network restrictions. It adds connection history and firewall controls around an existing UniFi OS controller, helping an administrator investigate devices and apply targeted lockdowns.

trackingstars / 7d
Verdict

Our UniFi Toolkit run passed all 322 tests and pip-audit reported 0 known vulnerabilities, but the current local-mode request-check report makes authenticated access a condition of my recommendation. It's worth a controlled trial for UniFi OS administrators who need device tracking and can verify firewall behavior on their own network. Standalone-controller owners and anyone expecting complete DNS or same-VLAN isolation should pass.

We ran it

Lab card: what happened when we ran unifi-toolkitScreenshot of unifi-toolkit (github.com/Crosstalk-Solutions/unifi-toolkit)
Install✓ · 25s89 packages · 211 MB
Build✓ · 1s
Tests✓ · 11s322 passed · 0 failed of 322 (pytest)
Known vulns0(pip-audit)
Repo157 files~26,018 lines of source · 3.2 MB · 3 CI workflows · Dockerfile · tests dir

Answers from our run

Does unifi-toolkit build from source?

Dependencies installed in 25 seconds (89 packages), and the build succeeded in 1 seconds. We cloned commit eb33bc0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do unifi-toolkit's tests pass?

Yes: 322 of 322 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does unifi-toolkit have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use unifi-toolkit?

Standalone or self-hosted UniFi controller owners: the README excludes those controllers from v1.11.0 onward.

What are the alternatives to unifi-toolkit?

Unpoller, LibreNMS. Our UniFi Toolkit run passed all 322 tests and pip-audit reported 0 known vulnerabilities, but the current local-mode request-check report makes authenticated access a condition of my recommendation.

Setup4/525-second install, with a wizard and documented container route
Docs4/5Specific controller requirements and frank firewall limitations
Community3/5Fresh issue reports and October fixes, with 10 open issues and PRs
Maturity3/5322 passing tests, with open local-mode and live-update reports

Who it’s for

UniFi OS administrators who want device roaming history, CSV exports, and gateway threat views in one dashboard.
Operators with a supported zone-based firewall who can review proposed House Arrest rules before applying them.
Self-hosters willing to configure authenticated access and keep the toolkit connected to controllers over their LAN or VPN.

Who it’s NOT for

Standalone or self-hosted UniFi controller owners: the README excludes those controllers from v1.11.0 onward.
Early Access firmware users: the README explicitly supports stable firmware only.
Administrators expecting DNS Lockdown to stop DNS-over-HTTPS or isolate every same-VLAN neighbor: the House Arrest guide excludes those guarantees.
Anyone relying on an unauthenticated LAN dashboard for safe device control: issue 145 reports cross-site state changes, and local mode skips the middleware's request check.
Teams depending on immediate Wi-Fi Stalker updates: issue 147 reports rejected WebSockets on our sampled commit.

Setup reality

Our October 15 sandbox run of eb33bc0 installed 89 packages in 25 seconds and used 211 MB on disk. The build passed in 1 second, and all 322 pytest cases passed in 11 seconds. Pip-audit reported 0 known vulnerabilities.

Run the setup wizard before Compose to generate the encryption key and configuration file. Add a locally reachable UniFi OS controller and API key through the web UI. Authenticated deployment adds an admin account, with a domain and Caddy configuration for public HTTPS. Standalone controllers and cloud access through unifi.ui.com are unsupported.

We ran Python 3.12 on fresh Debian with 3 CPUs, 8 GB of RAM, no secrets, and no elevated privileges. The 3.2 MB checkout had 157 files, about 26,018 source lines, three CI workflows, Docker and Compose files, and a tests directory. House Arrest requires the zone-based firewall, and same-VLAN blocking depends on compatible switches. Our checks didn't validate a physical controller.

Device tracking comes with the power to block devices

UI Toolkit lets you follow a device across access points, inspect gateway threats, and change network restrictions from one interface. Wi-Fi Stalker tracks MAC addresses and exports connection history, while Network Pulse displays clients and access points. House Arrest can write firewall policies. That last capability changes the buying decision: you are giving this dashboard control over connectivity, so its access settings deserve as much attention as its charts.

The source was only 3.2 MB in our checkout, but the useful work happens against a separate UniFi controller. This suits an administrator investigating roaming or managing an awkward IoT device on an existing UniFi OS network. For someone who only wants historical graphs, I'd start with Unpoller. Its export path to Prometheus or InfluxDB fits that narrower job without choosing a firewall-management interface.

What happened when we ran it

Our sandbox installed commit eb33bc0 in 25 seconds, built it in 1 second, and passed all 322 pytest cases in 11 seconds on October 15, 2026. We used a fresh, unprivileged Debian container with 3 CPUs, 8 GB of RAM, and the ghcr.io/astral-sh/uv:python3.12-bookworm image. No secrets were available. That is a good result for the repository's documented Python route.

The install added 89 packages and occupied 211 MB. Pip-audit reported 0 known vulnerabilities. The checkout contained 157 files and about 26,018 source lines, with three CI workflow files, a Dockerfile, a Compose file, and a tests directory. These checks establish that the sampled code installs and passes its suite. They don't establish that a physical gateway enforces a lockdown, or that every browser update arrives correctly.

UniFi OS is required, and standalone controllers are excluded

The README requires a UniFi OS controller and says standalone or self-hosted controllers stopped being supported with v1.11.0. Cloud access through unifi.ui.com is also unsupported. You need the controller's local address and network reachability, including a VPN for remote sites. House Arrest has another requirement: the zone-based firewall on UniFi Network 9.0 or later, plus API-key access. Early Access firmware is outside support.

The 25-second install doesn't include setting up that connection. Run ./setup.sh before Compose, since the guide warns that starting Docker first can create an empty .env directory where a file should be. Controller credentials then go into the web UI and are stored encrypted in the database. Keep the generated encryption key with the deployment's recovery material. For native Python, use a virtual environment as the installation guide directs.

Local mode skips authentication and the cross-site request check

The README calls local mode suitable for a trusted LAN and enables no authentication there. Production mode adds sessions and Caddy HTTPS. More concerning, issue 145 reports cross-site state changes in local mode, including device blocking. The authentication middleware returns early when authentication is disabled, before checking the custom header used to reject cross-site changes. That source behavior supports the report's concern without proving every reported endpoint works as described.

Our 0-known-vulnerability pip-audit result covers dependency advisories, not this application behavior. I would use authenticated mode and restricted network access even for an internal deployment. Controller certificate verification is off by default for self-signed certificates, another setting to review deliberately. The supplied Compose file also publishes the application port, so inspect which interfaces can reach it rather than assuming the Caddy profile defines the whole access boundary.

House Arrest documents the traffic it cannot stop

The House Arrest guide says changes receive a preview, created rules carry a marker, and release removes those marked rules. It also describes checking rule order after certain changes and warning when enforcement stops. Those are useful design choices for a tool that changes someone else's network. They let you inspect a proposed restriction and understand which rules belong to the tool before applying it.

Passing 322 tests doesn't remove the topology limits listed in that guide. Traffic between neighbors on the same VLAN can avoid the gateway, and switch-based blocking requires supported MAC ACLs on the traffic path. DNS Lockdown doesn't cover DNS-over-HTTPS. Existing sessions can continue under presets other than Quarantine, and an earlier allow rule can beat a later block. If you need guaranteed isolation across unsupported switches, choose a different network arrangement before relying on the dashboard.

Current reports qualify the live-update promise

Issue 147 reports rejected Wi-Fi Stalker WebSockets on the same eb33bc0 commit we measured. The reporter says the page falls back to polling while Network Pulse's socket works. The Stalker application factory also lacks the socket handler named in that report. This is a reason to defer adoption if prompt roaming notifications are your main requirement. Our passing suite did not establish that the live browser path works.

The last push was October 14, 2026, and GitHub showed 10 open issues and PRs alongside fresh reports and closed fixes. Release v1.13.3, published that day, addresses DNS display and Threat Watch problems. Main contains additional fixes beyond that tag. The README says latest moves on releases while edge follows merges, so choose the channel deliberately. For mixed-vendor monitoring, LibreNMS is the more relevant comparison. For this toolkit, my first deployment would use authenticated access and a spare device whose disconnection won't interrupt anyone.

Alternatives

ProjectWhat it isPick it when
UnpollerCollects UniFi controller data for Prometheus or InfluxDB and Grafana dashboards.pick this instead when historical metrics and existing monitoring infrastructure matter more than interactive device lockdowns.
LibreNMSAn auto-discovering network monitor built around PHP, MySQL, and SNMP.pick this instead when you need monitoring across hardware vendors rather than UniFi-specific tracking and firewall controls.

What people are saying

  1. [github-trending] Crosstalk-Solutions/unifi-toolkit

Sources

  1. UI Toolkit README
  2. Installation guide
  3. House Arrest behavior and limitations
  4. Local-mode cross-site request report
  5. Wi-Fi Stalker WebSocket report
  6. v1.13.3 release notes
  7. Unpoller
  8. LibreNMS

More self-hosted reviews

Qwen3.8-Flash-Next-Single-DGX-Spark-TensorFold · invisible_dots · LibreTV · ps5-payload-manager · DiPlay · AIHOT · the whole board →