{"adoption": {"forks": 46, "observed_at": "2026-09-03T02:15:11.998336+00:00", "stars": 1004}, "canonical_url": "https://ross.abutalabs.com/products/reverst", "card": {"archived": false, "artifact_type": "service", "description": "Reverse Tunnels in Go over HTTP/3 and QUIC", "domain": ["networking", "developer-tools", "backend", "infrastructure-as-code"], "enriched": true, "function": ["networking", "proxy", "http-server", "http-client", "middleware"], "health_score": 54, "homepage": "https://www.flipt.io", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["flipt-io/reverst"], "name": "flipt-io/reverst", "platform": ["go", "windows", "cross-platform", "cli", "self-hosted"], "pushed_at": "2025-12-11T16:51:32+00:00", "repo": "flipt-io/reverst", "stars": 1004, "tags": ["reverse-tunnel", "quic", "http3", "nat-traversal", "tunneling", "load-balancing", "ngrok-alternative", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["expose a local web service behind NAT to the public internet", "build load-balanced tunnels for multiple service instances over HTTP/3", "embed reverse-tunnel client functionality in a Go application", "self-hosted alternative to ngrok for tunneling", "serve HTTP requests to services in restrictive networks via QUIC tunnels"], "what_it_is": "Reverst is a load-balanced reverse-tunnel server and Go client library built on QUIC and HTTP/3. It lets services behind restrictive networks (e.g. NAT gateways) dial out to a publicly deployed tunnel server and expose themselves on the public internet.", "when_to_avoid": ["you only need simple TCP port forwarding rather than HTTP tunneling", "you need a polished turnkey tunnel service with dashboards and accounts", "your environment cannot use UDP, since QUIC requires it", "you need non-Go client SDKs"], "when_to_choose": ["you need to expose services from behind NAT/firewalls without port forwarding", "you want a Go library to embed tunneling via net/http abstractions", "you want load-balanced tunnel groups over QUIC/HTTP/3", "you prefer a self-hosted tunnel server you control"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/reverst", "repo": "flipt-io/reverst", "role": "main", "score": 50}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.998336+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:13:43.959597+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1ae0c0dffde64d226f7c549da58abb2521a2a2e5bd9013a5d896a236c611b20d", "fetched_at": "2026-09-03T02:15:11.998336+00:00", "kind": "readme", "missing": false, "url": "https://github.com/flipt-io/reverst"}, {"content_hash": "d3caf55899c87a8f456d3afd00ee741ef549bbee916d057c0e45ca14c9ee527b", "fetched_at": "2026-08-29T13:13:26.769606+00:00", "kind": "homepage", "missing": false, "url": "https://www.flipt.io"}, {"content_hash": "d27e4201cf98cdecf5065a34660a9d02dbff3773dbefff87f8b07d59b896eb87", "fetched_at": "2026-08-29T13:13:26.778853+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2"}, {"content_hash": "c952439f812b4a178f2f58755e721cf0346dfb4de403b2c051ce648ba10e6694", "fetched_at": "2026-08-29T13:13:26.780731+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/quickstart"}, {"content_hash": "4a07bc5ecb00ec17f4323b973c0760b59cd14ae3eb4fbcf71793e94caba3c3a5", "fetched_at": "2026-08-29T13:13:26.782488+00:00", "kind": "site_page", "missing": false, "url": "https://docs.flipt.io/v2/pro"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 56, "longevity": 63, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 882, "days_push": 265, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 50, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}