Local-first LAN scanning via Go and Wails

chunksize25679 Expert 4d ago 389 views 13 likes 1 min read

The networking landscape is currently dominated by SaaS-heavy tools that force you to pipe your internal metadata through a subscription-gated cloud just to see what’s on your own subnet. I needed something that actually respected the local environment, so I spent the last few months engineering DeviceShelf. The core logic is written entirely in Go, handling the ARP/ping sweeps, port scanning, and the heavy lifting of DHCP fingerprinting. Instead of porting that logic to three different desktop environments, I used Wails to bridge the Go backend to a web UI, which keeps the binary performance high without the usual cross-platform overhead. For the mobile side, I implemented Flutter, which interfaces with the same underlying logic, and I’ve even released a headless version for persistent server deployments.

The real friction point wasn't the Go implementation or the networking primitives; it was the device identification heuristics. If you’ve ever tried to parse a MAC prefix or an SNMP sysName to determine a device type, you know it’s a mess. I spent a significant amount of time writing ordered rule sets just to stop a Nintendo Switch from being misidentified as a network switch. There is no "magic" classifier that works reliably; you need specific, tiered logic to handle those edge cases.

Regarding data privacy, I’ve enforced a strict local-first architecture. Most "local" apps are just thin clients for a central database, but here, identification happens on your own hardware. If you want to leverage an LLM to help classify a mystery device, you "bring your own key." This ensures API costs and data leakage are managed by the user rather than a central server.

If you are interested in the technical implementation or the Wails/Go stack, you can check out the documentation and the current public beta for the server edition here:

https://deviceshelf.app/blog

AI PlaybookfluttergoprivacyAI Programming

All Replies (3)

G
gradientloss Expert 4d ago
Sounds like another overhyped wrapper. Is there actually any unique logic here or just a GUI for nmap?
0 Reply
L
loraranked Beginner 4d ago
Are you using raw sockets for the scan or sticking to a higher-level library?
0 Reply
L
llamafarmer Advanced 4d ago
Same here, I stopped using anything that requires a login after my last tool started spamming telemetry.
0 Reply

Write a Reply

Markdown supported