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
34•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•13m 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.
rvermeulen98•5m ago
Thanks, I am glad you like it! I couldn't find a Go API that just returns the OS "default" network interface, so struggled a bit with a correct implementation for that part.

When reading some blog posts, I found often a solution where it sends out an UDP dial to for example 8.8.8.8:53 because you can then get the network interface back from the connection it's local address. As fallback I implemented to pick the first non-loopback interface that is up.

Would be open to suggestions to do this in a better way!

petcat•39m 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•21m 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•13m 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•36m 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•14m 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.

Radicle: The Sovereign Forge

https://radicle.xyz
37•ibobev•1h ago•12 comments

Booting from a vinyl record (2020)

https://boginjr.com/it/sw/dev/vinyl-boot/
87•yesturi•4h ago•23 comments

AI is a horse (2024)

https://kconner.com/2024/08/02/ai-is-a-horse.html
169•zdw•3d ago•83 comments

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

https://github.com/ramonvermeulen/whosthere
35•rvermeulen98•2h ago•10 comments

Proton Spam and the AI Consent Problem

https://dbushell.com/2026/01/22/proton-spam/
280•dbushell•7h ago•176 comments

Updates to our web search products and Programmable Search Engine capabilities

https://programmablesearchengine.googleblog.com/2026/01/updates-to-our-web-search-products.html
128•01jonny01•5h ago•122 comments

I built a light that reacts to radio waves [video]

https://www.youtube.com/watch?v=moBCOEiqiPs
289•codetheweb•9h ago•65 comments

What has Docker become?

https://tuananh.net/2026/01/20/what-has-docker-become/
97•tuananh•2h ago•87 comments

Replacing Protobuf with Rust to go 5 times faster

https://pgdog.dev/blog/replace-protobuf-with-rust
95•whiteros_e•5h ago•65 comments

AI Usage Policy

https://github.com/ghostty-org/ghostty/blob/main/AI_POLICY.md
319•mefengl•5h ago•157 comments

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

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

Microsoft mishandling example.com

https://tinyapps.org/blog/microsoft-mishandling-example-com.html
90•mrled•1h ago•34 comments

GPTZero finds 100 new hallucinations in NeurIPS 2025 accepted papers

https://gptzero.me/news/neurips/
883•segmenta•23h ago•471 comments

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

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

The state of modern AI text to speech systems for screen reader users

https://stuff.interfree.ca/2026/01/05/ai-tts-for-screenreaders.html
46•tuukkao•5h ago•10 comments

Presence in Death

https://rubinmuseum.org/presence-in-death/
28•tock•2h ago•3 comments

The cleaner: One woman’s mission to help Britain’s hoarders

https://www.aljazeera.com/features/2026/1/18/the-cleaner-one-womans-mission-to-help-britains-hoar...
18•Qem•4d ago•10 comments

Capital One to acquire Brex for $5.15B

https://www.reuters.com/legal/transactional/capital-one-buy-fintech-firm-brex-515-billion-deal-20...
325•personjerry•17h ago•270 comments

I was banned from Claude for scaffolding a Claude.md file?

https://hugodaniel.com/posts/claude-code-banned-me/
613•hugodan•20h ago•545 comments

Why does SSH send 100 packets per keystroke?

https://eieio.games/blog/ssh-sends-100-packets-per-keystroke/
553•eieio•19h ago•295 comments

Tesla fined for repeatedly failing to help UK police over driving offences

https://www.bbc.co.uk/news/articles/c0r44zpprg7o
7•6LLvveMx2koXfwn•13m ago•0 comments

Qwen3-TTS family is now open sourced: Voice design, clone, and generation

https://qwen.ai/blog?id=qwen3tts-0115
649•Palmik•1d ago•205 comments

Variation on Iota

https://www.toolofthought.com/posts/variation-on-iota
7•aebtebeten•4d ago•2 comments

Douglas Adams on the English–American cultural divide over "heroes"

https://shreevatsa.net/post/douglas-adams-cultural-divide/
489•speckx•1d ago•493 comments

Why medieval city-builder video games are historically inaccurate (2020)

https://www.leidenmedievalistsblog.nl/articles/why-medieval-city-builder-video-games-are-historic...
171•benbreen•14h ago•113 comments

Your app subscription is now my weekend project

https://rselbach.com/your-sub-is-now-my-weekend-project
440•robteix•4d ago•309 comments

TI-99/4A: Leaning More on the Firmware

https://bumbershootsoft.wordpress.com/2026/01/17/ti-99-4a-leaning-more-heavily-on-the-firmware/
54•ibobev•4d ago•22 comments

Scaling PostgreSQL to power 800M ChatGPT users

https://openai.com/index/scaling-postgresql/
246•mustaphah•17h ago•106 comments

European Alternatives

https://european-alternatives.eu
36•s_dev•1h ago•4 comments

The lost art of XML

https://marcosmagueta.com/blog/the-lost-art-of-xml/
66•Curiositry•11h ago•91 comments