{"adoption": {"forks": 211, "observed_at": "2026-08-28T04:05:00.261711+00:00", "stars": 1538}, "canonical_url": "https://ross.abutalabs.com/products/jprq", "card": {"archived": false, "artifact_type": "cli-tool", "description": "join public router. quickly.", "domain": ["developer-tools", "web-development", "networking"], "enriched": true, "function": ["networking", "http-server", "proxy", "developer-tools", "cli"], "health_score": 92, "homepage": "https://jprq.io", "language": "Go", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["azimjohn/jprq"], "name": "azimjohn/jprq", "platform": ["windows", "cli", "cross-platform", "go"], "pushed_at": "2026-06-20T12:10:26+00:00", "repo": "azimjohn/jprq", "stars": 1538, "tags": ["tunneling", "ngrok-alternative", "localhost", "tcp-forwarding", "webhooks", "self-hostable", "reverse-proxy", "command-line", "linux", "macos"], "topics": ["ngrok-alternative", "ngrok-replacement", "tunnel-server", "tunneling"], "urls": [], "use_cases": ["expose localhost to the internet for testing", "receive webhooks from stripe or github on my local machine", "share a local dev server with a public url", "tunnel ssh or tcp services through a firewall", "serve a local folder as a public static site", "inspect http requests hitting my local server", "use a custom domain for local development"], "what_it_is": "JPRQ is a free, open-source tunneling tool written in Go that exposes local servers to the public internet via HTTP or TCP tunnels, with custom subdomains, a built-in static file server, and a request debugger. It works as an ngrok alternative with both a CLI and a desktop app, and can be self-hosted.", "when_to_avoid": ["you need enterprise-grade tunneling with team access controls and SLAs", "you require a permissive open-source license for commercial redistribution (no license is specified)", "you want to use the hosted service without signing up or supporting the maintainer (it is members-only)", "you need tunnels on platforms beyond Windows, macOS, and Linux"], "when_to_choose": ["you need a quick ngrok alternative to expose local HTTP or TCP servers", "you want a self-hostable tunneling solution", "you need custom subdomains or your own domain via CNAME", "you want a lightweight CLI with a built-in debugger and static file serving"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jprq", "repo": "azimjohn/jprq", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:00.261711+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:56.719798+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2f34ccf8f98d932da5f044b25aca2c9493ff7f085b53faa98b3ae85fd7a6008c", "fetched_at": "2026-08-28T04:05:00.261711+00:00", "kind": "readme", "missing": false, "url": "https://github.com/azimjohn/jprq"}, {"content_hash": "bcb5631898ce6d0e501ed6e2654b023a6f72e7d022515b216b9c00f8b8d2d638", "fetched_at": "2026-08-29T11:32:32.433348+00:00", "kind": "homepage", "missing": false, "url": "https://jprq.io"}, {"content_hash": "ab2bdfc0e4bbbc9c165d14cafcaa60eb5329b51036a4f2cf7aad7c23c593ba82", "fetched_at": "2026-08-29T11:32:32.442784+00:00", "kind": "site_page", "missing": false, "url": "https://jprq.io/cli"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 88, "longevity": 100, "rhythm": 55}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2328, "days_push": 74, "days_rel": 85, "gap_med": 292.0, "n_releases_24m": 3}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}