Retour au classement

olalie/tapmap

Pythonolalie.github.io/tapmap/

Watch your computer connect across the internet in real time. Discover the world behind your apps.

network-visualizationpythongeolocationdockerdashplotlyreal-timeinteractive-mapinternet-observability
Croissance des étoiles
Étoiles
1.2k
Forks
71
Croissance hebdomadaire
Issues
2
8001k
mars 26avr. 26juin 26juil. 26
ArtefactsPyPIpip install tapmap
README

TapMap

Latest version platforms Docker Pulls License

TapMap demo

Featured in: How-To GeekMakeUseOfkode24

Watch your computer connect across the internet in real time. Discover the world behind your apps.

Runs locally. No telemetry. Docker supported on Linux.

TapMap inspects local socket data, enriches IP addresses with geolocation, and visualizes the locations on an interactive map.

It also builds a local activity history to provide insights and identify patterns in network activity over time.

It is an awareness tool, not a firewall or a full security suite. It makes network activity visible and easy to explore.


Quick start

Download

Download the latest version from the Releases page.

Choose the package for your platform:

Windows

  • Download and run the Windows installer

macOS

  • Download and open the .dmg image
  • Drag TapMap to Applications

Linux

  • Download and install the .deb package

Note

Windows may show a SmartScreen warning the first time you open the TapMap installer.

See Windows SmartScreen.

Docker (Linux host only)

docker run --rm \
--network host \
--pid host \
-v ~/tapmap-data:/data \
-e TAPMAP_IN_DOCKER=1 \
olalie/tapmap:latest

For Docker configuration, updates, process visibility, and Docker Compose usage, see Docker.


Why TapMap

Your computer connects to many systems without you noticing.

TapMap makes this visible so you can:

  • See where connections go
  • Notice when something new appears
  • Understand what is normal over time
  • Explore connections with hover and click

What TapMap shows

  • Services your computer connects to
  • Their approximate locations on a world map
  • Nearby locations highlighted when multiple connections overlap
  • Insights panel showing new and frequent activity over time
  • Daily Activity Report with application patterns, provider analysis, and activity timelines
  • 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.


How to use

  • Hover map markers for a summary
  • Click map markers for detailed information
  • Open the menu in the upper-left corner to access Insights, network views, and application information
  • Open the Daily Activity Report with D
  • Click countries in Insights to zoom to a country

Insights and Daily Activity Report

TapMap builds a rolling 30-day history of network activity and helps you understand what is normal, new, recurring, or unusual.

The Insights panel highlights:

  • New apps, providers (ASN), countries, and ports
  • Frequent activity (Top 5+, including ties)
  • Click countries to zoom and inspect on the map

The Daily Activity Report provides a broader summary of recent activity:

  • Application recurrence patterns (seen once, occasional, recurring, and stable)
  • Provider concentration analysis
  • Country activity visualization
  • Generated activity logs with detailed timelines

The map shows connections observed since TapMap started or the cache was last cleared, while Insights and the Daily Activity Report use historical activity collected during the last 30 days.

To build a complete activity history, keep TapMap running while your system is in use. Running it at startup is recommended.


How it works

TapMap follows a simple local pipeline:

socket scan → IP extraction → GeoIP lookup → map rendering

It uses:

  • psutil (Windows and Linux) or lsof (macOS) to read active network connections
  • GeoIP databases for IP geolocation
  • Dash and Plotly to render an interactive world map

How it runs

TapMap runs locally as a web server and opens your browser:

http://127.0.0.1:8050/

If it does not open automatically, enter the address manually.

TapMap works with the default configuration.

Runtime configuration through environment variables is documented in Environment Variables.

Users running TapMap from source can also adjust settings in config.py.


GeoIP databases

TapMap uses GeoIP databases to display locations on the map.

If no supported databases are found, GeoIP Database Management opens automatically and guides you through database setup.

Installation, updates, provider selection, and manual installation are documented in GeoIP Database Management.


Documentation

Additional documentation:


Interface

TapMap features

Main view

Interactive world map with live connections, Insights, and quick access to major features.

Main view

Daily Activity Report

Historical analysis of applications, providers, countries, and activity patterns observed during the last 30 days.

Daily Activity Report

GeoIP Database Management

Install, update, verify, and manage GeoIP databases used for geolocation.

GeoIP Database Management

Open ports

View local TCP listening ports and UDP bound ports, including processes and services.

Open ports

Unmapped services

Inspect connections that could not be geolocated and therefore do not appear on the map.

Unmapped services


Keyboard controls

Key Action
D Daily Activity Report
I Toggle Insights panel
U Unmapped public services
L Established LAN/LOCAL services
O Open ports
G GeoIP Database Management
E Export cache
C Clear cache
H Help
A About
Z Fit Connections
X Exit
ESC Close window

Privacy

TapMap is designed to protect your privacy. It processes network connection data locally, does not transmit connection data, telemetry, analytics, or personal information, and performs geolocation using local GeoIP databases.

For details, see PRIVACY.md.


Platforms and builds

Download the latest version from the Releases page.

Available downloads:

  • Windows installer
  • Linux (.deb)
  • macOS (Apple Silicon)
  • macOS (Intel)

Tested on:

  • Windows 11
  • Ubuntu
  • macOS (Apple Silicon)

Community testing has confirmed support on additional platforms and architectures.

Command-line options:

tapmap --help

tapmap --version
tapmap -v

Windows SmartScreen

Windows may show a SmartScreen warning the first time you run the TapMap installer.

This can happen until Windows has built enough reputation for the installer.

To continue:

  1. Click More info.
  2. Click Run anyway.

Build from source

Requirements:

  • Python 3.10+

Create a virtual environment:

python -m venv .venv

Activate it:

source .venv/bin/activate   (Linux/macOS)
.venv\Scripts\activate      (Windows)

Install dependencies:

pip install -r requirements-tests.txt
pip install -e .

Run:

python -m tapmap

Run tests:

pytest

Build distribution packages (optional)

Build the distribution package for the current platform:

python tools/build.py

The build pipeline automatically:

  • Runs the test suite.
  • Detects the current operating system.
  • Builds the corresponding distribution package.

Output:

The generated package is created in the dist directory.

  • Windows: Installer (.exe)
  • macOS: Disk image (.dmg)
  • Linux: Debian package (.deb)

Project

TapMap is developed by Ola Lie at TIP Teknologi i Praksis AS.


License

MIT License


Acknowledgements

Many thanks to the community members who reported bugs, tested pre-release builds, and suggested improvements.

  • @faxotherapy for reporting macOS compatibility issues and testing Intel builds.

  • @nafarinha for confirming architecture support and validating macOS behavior.

  • @totti4ever for reporting Docker multi-arch issues and confirming the fix on arm64.

  • @khadanja for suggesting a Docker-based workaround.

  • @TechnVision for raising the configurable port use case.

  • @desrod for suggesting a solution for configurable port support.

  • @hugalafutro for suggesting optional SYS_PTRACE support for process visibility on Linux.

  • @mad-tunes for suggesting optional browser launch control when running TapMap as a service, and configurable cache retention to reduce map clutter on busy systems.

  • @forthrin for detailed first-use feedback and suggestions that improved map navigation and overall usability.

Dépôts similaires
secdev/scapy

Scapy: the Python-based interactive packet manipulation program & library.

PythonPyPIGNU General Public License v2.0scapypython
scapy.net
12.4k2.2k
scanopy/scanopy

Network diagrams that update themselves

Rustcrates.ioGNU Affero General Public License v3.0homelabnetwork-analysis
scanopy.net
5.2k255
briatte/awesome-network-analysis

A curated list of awesome network analysis resources.

Rnetwork-analysisnetwork-visualization
f.briatte.org/r/awesome-network-analysis-list
4.1k637
phpipam/phpipam

phpipam development repository

PHPPackagistipammanagement-system
phpipam.net
2.8k793
graphistry/pygraphistry

PyGraphistry is a Python library to quickly load, shape, embed, and explore big graphs with the GPU-accelerated Graphistry visual graph analyzer

PythonPyPIBSD 3-Clause "New" or "Revised" Licensegraphvisualization
2.5k231
neo4j-contrib/neovis.js

Neo4j + vis.js = neovis.js. Graph visualizations in the browser with data from Neo4j.

TypeScriptnpmApache License 2.0neo4jvisualization
1.8k327
lance0/ttl

Fast, modern traceroute with real-time TUI, per-hop stats, ASN/geo lookup, ECMP detection, and MPLS label parsing. A better mtr.

Rustcrates.ioApache License 2.0asn-lookupcli
1.3k84
palash1992/GEM

PythonPyPIBSD 3-Clause "New" or "Revised" Licensegraph-embeddinggraph-embeddings
1.3k357
WestHealth/pyvis

Python package for creating and visualizing interactive network graphs.

HTMLBSD 3-Clause "New" or "Revised" Licensenetwork-visualizationpython
pyvis.readthedocs.io/en/latest/
1.2k190
karam-ajaj/atlas

Open-source tool for network discovery, visualization, and monitoring. Built with Go, FastAPI, and React, supports Docker host scanning.

JavaScriptnpmMIT Licensecontainerdevops
atlasdemo.vnerd.nl
1.1k49
thomasp85/ggraph

Grammar of Graph Graphics

ROthergraph-visualizationggplot2
ggraph.data-imaginist.com
1.1k114
reaviz/reagraph

🕸 WebGL Graph Visualizations for React. Maintained by @goodcodeus.

TypeScriptnpmApache License 2.0reactwebgl
reagraph.dev
1.1k94