See where your computer connects on a live world map.
TapMap inspects local socket data, enriches IP addresses with geolocation, and visualizes the locations on an interactive map.
It uses:
psutilto read active network connections- MaxMind GeoLite2 databases for IP geolocation
- Dash and Plotly to render an interactive world map
Architecture: local socket scan → IP extraction → GeoIP lookup → map rendering.
TapMap runs entirely on your own machine.
It is not a firewall or a full security suite.
It makes network activity visible on a world map and easy to inspect with hover and click.
TapMap can also run in Docker on Linux, with limited process visibility.
Full documentation, including API reference and platform behavior notes:
https://olalie.github.io/tapmap/
Download the latest version from the
Releases page
Available builds:
- Windows (zip)
- Linux (zip)
No installation required. Download, extract, and run.
Linux notes:
xdg-openis used by the Open data folder action.
Start TapMap from the extracted folder:
chmod +x tapmap
./tapmap
Tested on Windows 11 and Ubuntu.
Windows may show a SmartScreen warning the first time you run TapMap.
This is normal for new applications that are not digitally signed.
To start the program:
- Click More info.
- Click Run anyway.
TapMap runs locally and opens in your browser.
The web interface runs on a local server at:
http://127.0.0.1:8050/
If it does not open automatically, enter the address manually in your browser.
The default port is defined by SERVER_PORT in config.py.
The port can be overridden using the environment variable TAPMAP_PORT.
Examples:
Linux / macOS:
TAPMAP_PORT=8060 python tapmap.py
PowerShell:
$env:TAPMAP_PORT="8060"
python tapmap.py
TapMap uses local MaxMind GeoLite2 databases for geolocation.
The databases are not included in the download.
TapMap works without these files, but map locations will not be displayed.
Required files:
- GeoLite2-City.mmdb
- GeoLite2-ASN.mmdb
Download is free from MaxMind, but requires an account and acceptance of license terms:
https://dev.maxmind.com/geoip/geolite2-free-geolocation-data
After downloading:
- Start TapMap.
- Open the data folder from the app.
- Copy the
.mmdbfiles into that folder. - Click Recheck GeoIP databases.
Update recommendation: download updated databases regularly, for example monthly.
Redistribution is subject to the MaxMind license terms.
- Services your computer connects to
- Their approximate locations on a world map
- Nearby clusters highlighted visually
- Unmapped public services with missing geolocation
- Established LAN and LOCAL services
- Local open ports (TCP LISTEN and UDP bound)
All data is collected locally on your machine.
Most computers communicate with dozens of remote systems every day.
You usually cannot see them.
TapMap makes these connections visible within seconds.
- See unexpected connections
- Understand where traffic goes
- Get a quick overview of network activity
Unexpected connections may indicate misconfiguration, background services, or unwanted software.
| Key | Action |
|---|---|
| U | Unmapped public services |
| L | Established LAN/LOCAL services |
| O | Open ports |
| T | Show cache in terminal |
| C | Clear cache |
| R | Recheck GeoIP databases |
| H | Help |
| A | About |
| ESC | Close window |
- TapMap runs locally.
- No connection data is sent anywhere.
- Geolocation uses local MaxMind databases.
- If
MY_LOCATION = "auto", TapMap makes a small request to detect your public IP. - To detect offline status, TapMap performs short connection checks to 1.1.1.1 and 8.8.8.8.
TapMap reads settings from config.py.
Common settings:
SERVER_PORTMY_LOCATIONPOLL_INTERVAL_MSCOORD_PRECISIONZOOM_NEAR_KM
SERVER_PORT defines the default port used by the local Dash server.
The port can be overridden at runtime using the environment variable TAPMAP_PORT.
Requirements:
- Python 3.10+
Install dependencies:
pip install -r requirements.txt
Run:
python tapmap.py
Run tests:
pytest
TapMap can run in Docker on Linux hosts.
- Linux host
- Docker installed
- GeoLite2
.mmdbfiles
Place the GeoLite2 database files in:
docker-data/
docker compose -f compose.linux.yaml up --build
Open in browser:
http://127.0.0.1:8050
- Docker provides full TCP and UDP socket data
- Process information is not available in Docker mode
- Requires Linux host (not supported on Docker Desktop for Windows or macOS)
TapMap can run directly from Docker Hub without cloning the repository.
Create a local data folder:
mkdir -p ~/tapmap-data
Place the GeoLite2 database files in that folder:
- GeoLite2-City.mmdb
- GeoLite2-ASN.mmdb
docker run --rm \
--network host \
--pid host \
-v ~/tapmap-data:/data \
-e TAPMAP_IN_DOCKER=1 \
olalie/tapmap:latest
Open in browser:
http://127.0.0.1:8050
- The mounted folder is used as the container data directory (
/data) - Process information is not available in Docker mode
- Requires Linux host (not supported on Docker Desktop for Windows or macOS)
TapMap is free and open source.
If you find it useful, consider supporting the project:
-
Buy Me a Coffee
https://www.buymeacoffee.com/olalie -
PayPal
https://www.paypal.com/donate/?hosted_button_id=ELLXBK9BY8EDU
You can also give the project a star on GitHub.
MIT License






