frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Whosthere: A LAN discovery tool with a modern TUI, written in Go

https://github.com/ramonvermeulen/whosthere
32•rvermeulen98•2h ago

Comments

rvermeulen98•2h ago
I've been working on a LAN discovery tool with a Terminal User Interface (TUI) written entirely in Go. It's called Whosthere, and it's designed to help you explore devices on your local network without requiring elevated privileges.

It works by combining several discovery methods:

- mDNS and SSDP scanning

- ARP cache reading (after triggering ARP resolution via TCP/UDP sweeps)

- OUI lookups to identify device manufacturers

It also includes:

- A fast, keyboard-driven TUI (powered by tview)

- An optional built-in port scanner

- Daemon mode with a simple HTTP API to fetch devices

- Configurable theming and behavior via a YAML config file

Why I built it:

Mainly to learn, I've been programming in Go for about a year now and wanted to combine learning Go with learning more about networking in one single project. I've always been a big fan of TUI applications like lazygit, k9s, and dive. And then the idea came to build a TUI application that shows devices on your LAN. I am by no means a networking expert, but it was fun to figure out how ARP works, and discovery protocols such as mDNS and SSDP.

Example usage:

---

# install via HomeBrew brew tap ramonvermeulen/whosthere brew install whosthere

# or with go install go install github.com/ramonvermeulen/whosthere@latest

# run as TUI whosthere

# run as daemon whosthere daemon --port 8080

---

I'd love to hear your feedback, if you have ideas for additional features or improvements that is highly appreciated! Current platform support is Linux and MacOS.

Anonbrit•1h ago
It says 'Open ports: (None)' for all devices on my network, despite there being open ports on many of them (MacOS Tahoe 26.2 / installed via go)
rvermeulen98•7m ago
It doesn't start port scanning by default, maybe this is a feature I can build in the future. When you are on the `detail` view of a device, you can press `p` and that will open a pop-up to perform the port scan. Also the list of ports that will be scanned is a default list of common ports, and can be configured via the configuration yaml.
coolius•1h ago
this is great! i had to tweak the config file on macos because it was using some weird interface (utun4) instead of en0. otherwise awesome tool, i am definitely going to be using this more often.
petcat•33m ago
I love the resurgence of TUI apps, but I wonder what the definition of "modern TUI" means in these cases. Does it basically mean just not using curses?
Daviey•15m ago
It means it has a dependency on X11.

  $ go install github.com/ramonvermeulen/whosthere@latest
  # golang.design/x/clipboard
  clipboard_linux.c:14:10: fatal error: X11/Xlib.h: No such file or directory
    14 | #include <X11/Xlib.h>
       |          ^~~~~~~~~~~~
  compilation terminated.
fellerts•7m ago
That has nothing to do with the UI framework. The X11 dependency comes as part of the clipboard integration (which I'd argue should be optional or even removed). Still, I wouldn't call it modern if Wayland is outright not supported.
84634E1A607A•30m ago
Overall good work. I'd request an `-i` command-line parameter to specify the interface to scan (and I'd prefer ALL params being able to be read from command line params). I think it just performs a full scan initially on my laptop, following scans either didn't success or didn't involve TCP connect scan (I don't see ARP requests after the initial scan).
rvermeulen98•8m ago
That is indeed true, the initial scan only does a sweep of the subnet of the used network interface (up to a /16 max) once every 5 minutes. On a subnet larger than /16 it will log a warning and scan from the first ip in the subnet up to where a /16 would end.

I didn't want to burden the local network too much, so therefore build in this rule. The network interface can be configured via the yaml file, but I think it is a good idea to add flags for more of the configuration options that are currently supported via yaml.

Show HN: Whosthere: A LAN discovery tool with a modern TUI, written in Go

https://github.com/ramonvermeulen/whosthere
32•rvermeulen98•2h ago•9 comments

Show HN: isometric.nyc – giant isometric pixel art map of NYC

https://cannoneyed.com/isometric-nyc/
1076•cannoneyed•21h ago•203 comments

Show HN: S2-lite, an open source Stream Store

https://github.com/s2-streamstore/s2
29•shikhar•1d ago•2 comments

Show HN: Txt2plotter – True centerline vectors from Flux.2 for pen plotters

https://github.com/malvarezcastillo/txt2plotter
31•tsanummy•3d ago•7 comments

Show HN: BrowserOS – "Claude Cowork" in the browser

https://github.com/browseros-ai/BrowserOS
76•felarof•22h ago•26 comments

Show HN: Text-to-video model from scratch (2 brothers, 2 years, 2B params)

https://huggingface.co/collections/Linum-AI/linum-v2-2b-text-to-video
88•schopra909•22h ago•18 comments

Show HN: A social network populated only by AI models

https://aifeed.social
6•capela•2h ago•6 comments

Show HN: I've been using AI to analyze every supplement on the market

https://pillser.com/
75•lilouartz•1d ago•39 comments

Show HN: AskUCP – UCP protocol explorer showing all products on Shopify

https://askucp.com/
7•possiblelion•4d ago•3 comments

Show HN: Interactive physics simulations I built while teaching my daughter

https://www.projectlumen.app/
83•anticlickwise•4d ago•21 comments

Show HN: First Claude Code client for Ollama local models

https://github.com/21st-dev/1code
40•SerafimKorablev•21h ago•22 comments

Show HN: Synesthesia, make noise music with a colorpicker

https://visualnoise.ca
34•tevans3•1d ago•13 comments

Show HN: Sweep, Open-weights 1.5B model for next-edit autocomplete

https://huggingface.co/sweepai/sweep-next-edit-1.5B
521•williamzeng0•1d ago•141 comments

Show HN: CLI for working with Apple Core ML models

https://github.com/schappim/coreml-cli
45•schappim•18h ago•4 comments

Show HN: Bible translated using LLMs from source Greek and Hebrew

https://biblexica.com
46•epsteingpt•22h ago•62 comments

Show HN: C/C++ Cheatsheet – a modern, practical reference for C and C++

https://github.com/crazyguitar/cppcheatsheet
7•crazyguitar•10h ago•2 comments

Show HN: Rails UI

https://railsui.com/
201•justalever•1d ago•108 comments

Show HN: I'm writing an alternative to Lutris

https://github.com/navid-m/styx
13•death_eternal•18h ago•4 comments

Show HN: ChartGPU – WebGPU-powered charting library (1M points at 60fps)

https://github.com/ChartGPU/ChartGPU
660•huntergemmer•1d ago•208 comments

Show HN: Mastra 1.0, open-source JavaScript agent framework from the Gatsby devs

https://github.com/mastra-ai/mastra
213•calcsam•2d ago•69 comments

Show HN: Figr – AI that thinks through product problems before designing

https://figr.design/
10•Mokshgarg003•18h ago•5 comments

Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets

https://github.com/borenstein/yolo-cage
59•borenstein•1d ago•73 comments

Show HN: ObsessionDB – We rebuilt ClickHouse infrastructure to cut our costs 50%

https://obsessiondb.com/
6•keks0r•3h ago•0 comments

Show HN: Wake – Terminal Session Context for Claude Code via MCP

https://github.com/joemckenney/wake
2•baobabmeeko•8h ago•0 comments

Show HN: Extracting React apps from Figma Make's undocumented binary format

https://albertsikkema.com/ai/development/tools/reverse-engineering/2026/01/23/reverse-engineering...
2•albertsikkema•9h ago•3 comments

Show HN: Retain – A unified knowledge base for all your AI coding conversations

https://github.com/BayramAnnakov/retain
45•Bayram•1d ago•16 comments

Show HN: The firmware that got me detained by Swiss Intelligence

https://github.com/seabass011/davos-incident-firmware
5•reutinger•10h ago•16 comments

Show HN: See the carbon impact of your cloud as you code

https://dashboard.infracost.io/
66•hkh•1d ago•27 comments

Show HN: High speed graphics rendering research with tinygrad/tinyJIT

https://github.com/quantbagel/gtinygrad
29•quantbagel•1d ago•10 comments

Show HN: gRPC Transport for HashiCorp/Raft

https://github.com/dhiaayachi/raft-grpc-transport
2•neo2006•11h ago•0 comments