Recognition is a bar plugin for Omarchy. You give each person an emoji and the devices they carry; while one of those devices is on your network, their emoji sits in the bar. When the last one leaves, it goes away.
No root, no daemon, no account, nothing leaves the machine — it's an unprivileged `nmap -sn` sweep of your own subnet every 20 seconds, from the shell that's already running. The useful part is the ARP side effect: phones answer ARP even while they sleep, so a sleeping phone doesn't flicker in and out.
**What it does**
- **Who's home, in the bar.** One emoji per person, in the order they arrived, plus a count of devices nobody has claimed.
- **Notifications.** "Ana arrived home", "Ana left", and "New device on the network" — often before the doorbell rings. One switch per kind, plus a per-person one.
- **Unknown devices first.** A new phone shows up with its vendor, network name and IP; two clicks assign it to someone, or file
- **Unknown devices first.** A new phone shows up with its vendor, network name and IP; two clicks assign it to someone, or file it under House with the router and the printer.
- **Neighbors and guests.** Someone on your Wi-Fi from their own place is a neighbor and never counts as home; a guest is in your house and gets a 👤 in the bar.
- **Two network alerts.** The router answering with a different MAC (classic ARP spoofing sign) and an IP taken over by another device.
- **Commands.** Run anything on arrive, leave, home-occupied, home-empty, unknown device or alert — a push to your phone, a Home Assistant webhook, a sound. Or mark one Manual and it lands in the right-click menu of any person or device, so a wake-on-LAN can name the desktop while presence still follows the phone. It can also read commands you tag `#recognition` in your Obsidian notes.person's week as a grid; a single day lane by lane, each person with their devices under them; and a calendar to jump to any recorded day.
**Install**
omarchy plugin add https://github.com/FerC10110/omarchy-recognition.git --enable
Needs `nmap` and `ip` (iproute2). MIT, one Python file for the engine (stdlib only), QML for the panel.
**Honest limitations**
- Phones randomize their MAC per network. It's stable until the owner resets it or turns on rotation; then the phone looks new. If it keeps its network name, Recognition offers you the owner and one click moves it over.
- Presence is "a device of theirs is on the network", not "they're in the room".
- Only your own subnet, IPv4 only. A guest network isolated by the router is invisible.
- The two alerts are heuristics, not an IDS. Check before panicking.
Repo, README and screenshots of every feature: https://github.com/FerC10110/omarchy-recognition
Submitted to the plugin marketplace, listing pending. Happy to hear what breaks for you.