TOMMY transforms ordinary Wi‑Fi devices into motion and presence sensors that detect occupancy through walls and obstacles. It's fully local and self-hosted with no cloud components. All processing happens on your network. Easy to install and integrates with Home Assistant or Matter.

Expected in Q1 2026
Expected in Q1 2026
One-click flashing • ESPHome compatible
Occupancy is sensed through walls and obstacles, which allows devices to be hidden in closets, cupboards, or anywhere out of sight.
Create zones that span your entire house with a few devices, or divide areas like "upstairs" and "downstairs" regardless of room boundaries. No need for sensors in every room.
Unlike traditional sensors that need to "look" at specific areas, Wi-Fi sensing monitors the entire area within a zone without requiring careful positioning or aiming.
TOMMY monitors disruptions in Wi‑Fi signals. Movement between the nodes changes wave patterns which the algorithm interprets as motion and presence.
Devices within your defined zone form a mesh network, continuously transmitting small Wi-Fi packets to each other, creating invisible detection paths throughout your space.
When someone moves between nodes, they disrupt the Wi-Fi signal patterns in measurable ways that TOMMY can detect.
TOMMY analyzes disruptions in real-time and reports motion in your defined zones. Each zone maps to a motion sensor entity for Home Assistant / Matter ecosystems.
Wi-Fi sensing is being rolled out by large corporations to routers and smart devices. TOMMY is the self-hosted alternative, where you own the data.
Wi-Fi signals are already being broadcast everywhere. Wi-Fi sensing looks at changes in those signals to detect motion and presence. Researchers are also exploring additional uses such as identifying who is in a room, monitoring breathing patterns, or detecting falls. The new 802.11bf standard is laying the foundation for bringing these capabilities to routers and IoT devices, but each manufacturer decides how they are implemented and where the data ends up.
Right now, motion and presence sensing are the features we believe work well in real environments. The rest remains an active area of research. All of it involves sensitive data, and who has access matters.
When large corporations add Wi-Fi sensing to their routers and devices, your data could end up on their servers. Imagine data about how you move, breathe, or the activities you do in your home being in the hands of anyone but yourself. TOMMY does the opposite. Everything runs locally. You get powerful sensing capabilities without the data ever leaving your network.
We believe Wi-Fi sensing has real potential to transform home automation. With TOMMY, we want everyone to benefit from it without the privacy tradeoff. We're building a self-hosted solution that aims to match or surpass what large corporations offer, while keeping control in the hands of the user. As the technology evolves, we continue developing TOMMY and add new features when we believe they are ready for real-world use.
Upcoming features planned for TOMMY
Detect when someone is present in a zone even when they're not moving, supporting room occupancy detection for sleeping, reading, or other stationary activities.
Distinguish between human motion and other movement sources like pets, fans, robot vacuum cleaners, and environmental factors.
Allow devices that are not flashed with TOMMY firmware to be used as passive sensors (e.g., Smart TVs, computers, gaming consoles). This will reduce the number of dedicated sensors needed.
Choose your preferred installation method
Integration with your Home Assistant instance
AMD64/ARM64 supported
Ports can be changed in the add-on configuration if needed for your network setup.
The dashboard can be opened in Home Assistant and added to your sidebar. Use it to flash devices, define zones, and expose motion sensors through the Home Assistant or Matter integrations.
For users who want standalone deployment
AMD64/ARM64 supported
Host networking is required for mDNS discovery of ESP32 devices. Ports can be configured through environment variables.
docker run -d --name tommy \
--network host \
-v $HOME/.tommy:/data \
-e DASHBOARD_PORT=8089 \
-e FILE_SERVER_HTTP_PORT=8090 \
-e FILE_SERVER_HTTPS_PORT=8091 \
-e MQTT_PORT=1886 \
-e UDP_RELAY_PORT=8547 \
--restart unless-stopped \
tommysense/virtual-bridge:latestAfter installation, access the dashboard at http://localhost:8089 to flash devices, define zones, and expose motion sensors through the Home Assistant or Matter integrations.
Try Community Edition free, or go Pro for unlimited zones
Great for trying out Wi-Fi sensing in one room
Cover your home with multiple zones. Buy once, use forever. Single machine license.
Custom licensing and dedicated support for businesses
* Stationary presence detection requires compatible hardware. Learn more.
Option for offline activation. Not supported for Docker installations.
Pay once and it's yours. No subscriptions or recurring fees.
Complete privacy protection. Works on isolated IoT VLANs. No data collection or tracking.
Connect with other users, get support, and stay updated on the latest features
Get notified about new releases and features
Get help from experienced users and developers
Suggest new features and vote on community ideas
Everything you need to know about TOMMY
Yes. With the right configuration, TOMMY can detect breathing and micromovements, enabling stationary presence detection. See the Detection Mode documentation for configuration requirements and optimal setup.
The current version detects all movement including pets, curtains, fans, and other moving objects. Future versions will include filtering, but for now you can adjust the sensitivity slider to reduce small movement detection.
No hub required. TOMMY runs as a Home Assistant add-on or on a Linux host (Docker) and uses supporting devices to create a sensing network. Everything runs on your local network with no cloud dependencies.
Minimum 2 devices per zone. While more devices can provide better coverage, there are diminishing returns after 4 devices in a zone. Focus on placement for zone coverage rather than maximizing device count.
Yes, TOMMY works with ESPHome. You can flash your devices either with the native TOMMY flasher or through ESPHome. The TOMMY flasher provides a more integrated experience such as automatic OTA updates, while ESPHome allows you to use other ESPHome components alongside TOMMY. Sensing performance is the same either way.
No. We want to be upfront about this.
Some components, such as the Home Assistant integration, are open source. The core parts are not.
TOMMY is built by a very small, bootstrapped team. To keep the project sustainable and continue developing and maintaining the features on the roadmap, we need a way to generate income from it. Because TOMMY is fully self-hosted, open sourcing the entire system would make it difficult to fund ongoing development.
Our goal is to offer a privacy-first, self-hosted solution that is reliable and actively maintained.
TOMMY is fully local and self-hosted with no cloud components. Everything runs on your network, all processing happens locally, and no data ever leaves your home. These privacy aspects are not just a promise: they are verifiable through network packet inspection or by simply placing TOMMY in an isolated IoT VLAN.
The Home Assistant Add-on supports offline license activation, allowing complete operation without internet connectivity. Note that Docker installations currently require an active internet connection to communicate with the license server.
For privacy-oriented users or IoT VLAN setups where devices are isolated from the internet, the Home Assistant add-on is recommended.