Multi-source IP intelligence and network connectivity diagnostic suite
1
stars
39
commits
TypeScript
primary language
Sep 14, 2026
updated
A high-performance IP intelligence and network connectivity diagnostic suite built as a unified Cloudflare Worker with Static Assets.
🚀 Website: https://ip.ii2d.com
Most IP lookup tools query a single remote server. my-ip-info cross-validates IP data across your self-hosted Cloudflare edge backend, public APIs (Cloudflare Trace, ipify, ipwho.is, IP.SB, ip.guide, SeeIP, icanhazip.com, IPIP.net), and browser WebRTC STUN candidates to detect VPN/proxy leaks, diagnose coordinate variations across geolocation databases, and measure real-time latency.
AS6327), ISP organization, and airport datacenter code (colo) directly from the edge TLS connection without external database lookups.my-ip-info can be installed directly as a standalone desktop or mobile application without needing third-party app stores.
navigateFallbackDenylist) so dynamic IP and geo lookups are never served from stale caches. Real-time window focus and network reconnect listeners automatically re-probe your IP when toggling VPNs or switching Wi-Fi networks.... → Install my-ip-info). The application will launch in its own dedicated, borderless desktop window and can be pinned to your Dock or Taskbar.⋮ → select Add to Home screen or Install app.my-ip-info/
├── src/
│ ├── client/ # React SPA (components, hooks, styling)
│ ├── server/ # Cloudflare Worker entrypoint & Hono API (/api/v1/*, CLI detection)
│ └── shared/ # Shared TypeScript types and IP utilities
├── public/ # Static assets, favicon, redirects
├── test/ # Unit tests (node:test)
├── index.html # SPA entry HTML
├── vite.config.ts # Client build configuration
├── wrangler.toml # Unified Cloudflare Worker configuration with [assets]
└── Dockerfile # Standalone Node/Docker server image
pnpm install
# Boot frontend (http://localhost:5173) and Cloudflare Worker (http://localhost:8787) concurrently
pnpm dev
# Or run services individually:
pnpm dev:client # Vite SPA with HMR (proxies /api to :8787)
pnpm dev:worker # Cloudflare Worker via Wrangler / workerd
pnpm dev:node # Standalone Node.js server (:3000)
pnpm test # Run 34 unit tests across core, worker pipeline, and providers
pnpm test:coverage # Run tests with V8 code coverage report
pnpm typecheck # Validate TypeScript types without emit
pnpm lint # Check code against Biome rules
pnpm format:check # Verify code formatting
Deploying requires zero environment variables:
# Build frontend and deploy unified worker
pnpm deploy
Wrangler will authenticate via your browser or respect your standard CLOUDFLARE_API_TOKEN environment variable.
To bind a custom domain in your Cloudflare zone, uncomment the route in wrangler.toml:
routes = [
{ pattern = "ip.yourdomain.com", custom_domain = true }
]
Cloudflare Workers will automatically configure the DNS record and provision SSL certificates with zero external tools needed.
To delete the deployed worker and its assets:
pnpm undeploy # or: npx wrangler delete
All backend API routes are versioned under /api/v1:
| Route | Method | Content-Type | Description |
|---|---|---|---|
/ | GET | text/html or text/plain | Serves React SPA to browsers; returns raw client IP to CLI tools (curl, wget) |
/ip | GET | text/plain; charset=utf-8 | Shorthand endpoint returning raw public IP with defensive security headers |
/api/v1/info | GET | text/plain or application/json or text/yaml | Smart content negotiation: returns plaintext for CLI or JSON for browsers. Supports explicit query override: ?format=json, ?format=yaml, ?format=text, ?format=ip |
/api/v1/ip | GET | text/plain; charset=utf-8 | Returns raw public client IP address with a trailing newline |
/api/v1/geo | GET | application/json | Geolocation data (city, region, country, lat/lon, ASN, datacenter colo) |
/api/v1/yaml | GET | text/yaml; charset=utf-8 | Client metadata and network details formatted as safe YAML |
/api/v1/health | GET | application/json | Health check endpoint returning status and provider identifier |
MIT License. Contributions and PRs welcome!
39 commits
TypeScript
92.7%
CSS
6.5%
Multi-source IP intelligence and network connectivity diagnostic suite
1
stars
39
commits
TypeScript
primary language
Sep 14, 2026
updated
A high-performance IP intelligence and network connectivity diagnostic suite built as a unified Cloudflare Worker with Static Assets.
🚀 Website: https://ip.ii2d.com
Most IP lookup tools query a single remote server. my-ip-info cross-validates IP data across your self-hosted Cloudflare edge backend, public APIs (Cloudflare Trace, ipify, ipwho.is, IP.SB, ip.guide, SeeIP, icanhazip.com, IPIP.net), and browser WebRTC STUN candidates to detect VPN/proxy leaks, diagnose coordinate variations across geolocation databases, and measure real-time latency.
AS6327), ISP organization, and airport datacenter code (colo) directly from the edge TLS connection without external database lookups.my-ip-info can be installed directly as a standalone desktop or mobile application without needing third-party app stores.
navigateFallbackDenylist) so dynamic IP and geo lookups are never served from stale caches. Real-time window focus and network reconnect listeners automatically re-probe your IP when toggling VPNs or switching Wi-Fi networks.... → Install my-ip-info). The application will launch in its own dedicated, borderless desktop window and can be pinned to your Dock or Taskbar.⋮ → select Add to Home screen or Install app.my-ip-info/
├── src/
│ ├── client/ # React SPA (components, hooks, styling)
│ ├── server/ # Cloudflare Worker entrypoint & Hono API (/api/v1/*, CLI detection)
│ └── shared/ # Shared TypeScript types and IP utilities
├── public/ # Static assets, favicon, redirects
├── test/ # Unit tests (node:test)
├── index.html # SPA entry HTML
├── vite.config.ts # Client build configuration
├── wrangler.toml # Unified Cloudflare Worker configuration with [assets]
└── Dockerfile # Standalone Node/Docker server image
pnpm install
# Boot frontend (http://localhost:5173) and Cloudflare Worker (http://localhost:8787) concurrently
pnpm dev
# Or run services individually:
pnpm dev:client # Vite SPA with HMR (proxies /api to :8787)
pnpm dev:worker # Cloudflare Worker via Wrangler / workerd
pnpm dev:node # Standalone Node.js server (:3000)
pnpm test # Run 34 unit tests across core, worker pipeline, and providers
pnpm test:coverage # Run tests with V8 code coverage report
pnpm typecheck # Validate TypeScript types without emit
pnpm lint # Check code against Biome rules
pnpm format:check # Verify code formatting
Deploying requires zero environment variables:
# Build frontend and deploy unified worker
pnpm deploy
Wrangler will authenticate via your browser or respect your standard CLOUDFLARE_API_TOKEN environment variable.
To bind a custom domain in your Cloudflare zone, uncomment the route in wrangler.toml:
routes = [
{ pattern = "ip.yourdomain.com", custom_domain = true }
]
Cloudflare Workers will automatically configure the DNS record and provision SSL certificates with zero external tools needed.
To delete the deployed worker and its assets:
pnpm undeploy # or: npx wrangler delete
All backend API routes are versioned under /api/v1:
| Route | Method | Content-Type | Description |
|---|---|---|---|
/ | GET | text/html or text/plain | Serves React SPA to browsers; returns raw client IP to CLI tools (curl, wget) |
/ip | GET | text/plain; charset=utf-8 | Shorthand endpoint returning raw public IP with defensive security headers |
/api/v1/info | GET | text/plain or application/json or text/yaml | Smart content negotiation: returns plaintext for CLI or JSON for browsers. Supports explicit query override: ?format=json, ?format=yaml, ?format=text, ?format=ip |
/api/v1/ip | GET | text/plain; charset=utf-8 | Returns raw public client IP address with a trailing newline |
/api/v1/geo | GET | application/json | Geolocation data (city, region, country, lat/lon, ASN, datacenter colo) |
/api/v1/yaml | GET | text/yaml; charset=utf-8 | Client metadata and network details formatted as safe YAML |
/api/v1/health | GET | application/json | Health check endpoint returning status and provider identifier |
MIT License. Contributions and PRs welcome!
39 commits
TypeScript
92.7%
CSS
6.5%