{"adoption": {"forks": 256, "observed_at": "2026-08-28T04:09:15.473558+00:00", "stars": 5313}, "canonical_url": "https://ross.abutalabs.com/products/flyingcarpet", "card": {"archived": false, "artifact_type": "application", "description": "Cross-platform AirDrop. File transfer between Android, iOS, Linux, macOS, and Windows over ad hoc WiFi. No network infrastructure required, just two devices with WiFi chips (and optionally Bluetooth) in close range.", "domain": ["files", "cross-platform", "privacy", "mobile-development"], "enriched": true, "function": ["file-system", "networking", "cryptography"], "health_score": 98, "homepage": null, "language": "Rust", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["spieglt/FlyingCarpet"], "name": "spieglt/FlyingCarpet", "platform": ["windows", "cross-platform"], "pushed_at": "2026-08-12T04:23:56+00:00", "repo": "spieglt/FlyingCarpet", "stars": 5313, "tags": ["file-transfer", "airdrop", "ad-hoc-wifi", "bluetooth", "tauri", "wireless", "no-internet", "android", "ios", "linux", "macos"], "topics": ["file-transfer", "wireless", "cross-platform", "ios", "linux", "macos", "windows", "android", "rust", "tauri", "f-droid", "fdroid", "bluetooth", "bluetooth-low-energy", "kotlin"], "urls": [], "use_cases": ["transfer files between android and iphone without internet", "airdrop alternative for windows and linux", "send large files between devices without a flash drive", "move files over 2GB between different filesystems", "share files between phone and desktop with no wifi network", "transfer files offline between nearby devices"], "what_it_is": "Flying Carpet is a cross-platform file transfer application that works like AirDrop between Android, iOS, Linux, macOS, and Windows devices. It transfers files over ad hoc WiFi (one device acting as a hotspot) or a shared network, requiring no internet connection or network infrastructure.", "when_to_avoid": ["you need to transfer files over the internet or to remote devices", "you require integration with native AirDrop or Nearby Share protocols", "you need to sync folders continuously rather than send one-off files"], "when_to_choose": ["you need to move files between devices on different platforms with no network or internet available", "you want an open-source AirDrop-like tool that works across Android, iOS, and desktops", "you need to transfer files larger than typical flash drive or filesystem limits without setting up a network share"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/flyingcarpet", "repo": "spieglt/FlyingCarpet", "role": "main", "score": 98}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "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:09:15.473558+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:15.473558+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:58:58.313964+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "041e22f2880322b52ccdc09bab1aab1ba3df875d5b1f05b9cd110b5a6ea417fc", "fetched_at": "2026-08-28T04:09:15.473558+00:00", "kind": "readme", "missing": false, "url": "https://github.com/spieglt/FlyingCarpet"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 97}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3321, "days_push": 21, "days_rel": 21, "gap_med": 8.0, "n_releases_24m": 11}, "score": 98, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}