惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
C
Check Point Blog
雷峰网
雷峰网
小众软件
小众软件
GbyAI
GbyAI
美团技术团队
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
Jina AI
Jina AI
爱范儿
爱范儿
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美

Show HN

GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap
GitHub - olalie/tapmap: See where your computer connects ...
olalie · 2026-04-30 · via Show HN

TapMap demo

See where your computer connects and what stands out on a live world map.

Discover what is unusual and what is most frequent over time.

Runs locally on Windows, Linux, and macOS. No telemetry. Docker supported on Linux.

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

TapMap uses:

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

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


New: Insights

TapMap tracks activity over the last 30 days and highlights what is unusual and what is most frequent.

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

While the map is limited to connections in the current session, insights are based on activity observed over time.

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


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 visually
  • Insights panel showing new and frequent activity over time
  • 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 it works

TapMap follows a simple local pipeline:

socket scan → IP extraction → GeoIP lookup → map rendering

How to use

  • Hover map markers for a summary
  • Click map markers for detailed information
  • Click countries in Insights to zoom to the location

Documentation

Full documentation, including API reference and platform behavior notes:

https://olalie.github.io/tapmap/


Download & run

Download the latest version from the
Releases page

Available builds:

  • Windows (zip)
  • Linux (zip)
  • macOS (zip)

Tested on Windows 11, Ubuntu, and macOS (Apple Silicon).

No installation required. Download, extract, and run.

Start TapMap:

./tapmap

Or run as module:

python -m tapmap

On Windows, double-click tapmap.exe.

On Linux, you may need:

chmod +x tapmap

Platform notes:

  • Linux uses xdg-open for the Open data folder action
  • macOS uses open

Command line

tapmap --help

tapmap --version
tapmap -v

Windows SmartScreen

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:

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

macOS security warning

macOS may block the app the first time you run TapMap. This is normal for unsigned applications.

To start the program:

  1. Try to open the app.
  2. Open System Settings → Privacy & Security.
  3. Click Open anyway for TapMap.

You may be asked to confirm once more.

Alternatively, you can remove the warning using Terminal:

xattr -d com.apple.quarantine tapmap

How it runs

TapMap runs locally and opens in your browser:

http://127.0.0.1:8050/

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

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 -m tapmap
TAPMAP_PORT=8060 tapmap

PowerShell:

$env:TAPMAP_PORT="8060"
python -m tapmap

GeoIP databases (required for map locations)

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 (free, account required): https://dev.maxmind.com/geoip/geolite2-free-geolocation-data

After downloading:

  1. Start TapMap.
  2. Follow the setup window to open the data folder.
  3. Copy the .mmdb files into that folder.
  4. Click Recheck GeoIP databases.

Update recommendation: download updated databases regularly, for example monthly.
Redistribution is subject to the MaxMind license terms.


Interface

TapMap features

Main view

Main view

Actions menu

Actions menu

Insights panel

Insights panel

Unmapped services

Unmapped services

Open ports

Open ports

About

About


Keyboard controls

Key Action
I Toggle Insights panel
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

Privacy

  • 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.

Configuration

TapMap reads settings from config.py.

Common settings:

  • SERVER_PORT
  • MY_LOCATION
  • POLL_INTERVAL_MS
  • COORD_PRECISION
  • ZOOM_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.


Build from source

TapMap uses a src-layout and must be installed before running.

Requirements:

  • Python 3.10+

Create virtual environment:

python -m venv .venv

Activate:

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

Install dependencies and package:

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

Run:

python -m tapmap

Run tests:

pytest

Build executable (optional)

Build a standalone executable using PyInstaller:

python tools/build.py

Output:

  • Linux/macOS: dist/tapmap
  • Windows: dist/tapmap.exe

Run:

./dist/tapmap      (Linux/macOS)
dist\tapmap.exe    (Windows)

Note:

The executable must be built on the target operating system.


Docker (Linux)

TapMap can run in Docker on Linux hosts.

Requirements

  • Linux host
  • Docker installed
  • GeoLite2 .mmdb files

Setup

Place the GeoLite2 database files in:

docker-data/

Run

docker compose -f compose.linux.yaml up --build

The server binds to 0.0.0.0 by default in Docker.

Override in compose if needed:

TAPMAP_HOST: "127.0.0.1"
TAPMAP_PORT: "8060"

Open in browser on the host:

http://127.0.0.1:8050 (default)

If you override TAPMAP_PORT, use that port instead.

If you access the app from another machine, use the host IP address instead.

Notes

  • Docker provides full TCP and UDP socket data
  • Process information may be unavailable in Docker mode, depending on host security policies
  • Requires Linux host (not supported on Docker Desktop for Windows or macOS)

Process visibility in Docker depends on host security policies.

On Ubuntu with the default Docker AppArmor profile (docker-default), SYS_PTRACE alone was not sufficient.

In this setup, process names became available with:

--cap-add=SYS_PTRACE
--security-opt apparmor=unconfined

Behavior may vary across systems.


Docker Hub

TapMap can run directly from Docker Hub without cloning the repository.

Setup

Create a local data folder:

mkdir -p ~/tapmap-data

Place the GeoLite2 database files in that folder:

  • GeoLite2-City.mmdb
  • GeoLite2-ASN.mmdb

Run

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

The server binds to 0.0.0.0 by default in Docker.

To override the bind address or port:

-e TAPMAP_HOST=127.0.0.1
-e TAPMAP_PORT=8060

Open in browser on the host:

http://127.0.0.1:8050 (default)

If you override TAPMAP_PORT, use that port instead.

If you access the app from another machine, use the host IP address instead.

Notes

  • The mounted folder is used as the container data directory (/data)
  • The host folder name can be chosen freely
  • Process information may be unavailable in Docker mode, depending on host security policies
  • Requires Linux host (not supported on Docker Desktop for Windows or macOS)

Support the project

TapMap is free and open source.

If you find it useful, consider supporting the project:

You can also give the project a star on GitHub.


License

MIT License


Acknowledgements

Thanks to @TechnVision for raising the configurable port use case.
Thanks to @desrod for suggesting a solution for configurable port support.
Thanks to @hugalafutro for suggesting optional SYS_PTRACE support for process visibility on Linux.