{"adoption": {"forks": 1892, "observed_at": "2026-08-28T04:12:09.753851+00:00", "stars": 46408}, "canonical_url": "https://ross.abutalabs.com/products/copyparty", "card": {"archived": false, "artifact_type": "application", "description": "Portable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file", "domain": ["files", "self-hosted", "web-development", "media", "developer-tools"], "enriched": true, "function": ["http-server", "file-upload", "search-engine", "image-processing", "audio-processing", "video-processing", "self-hosted"], "health_score": 99, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["9001/copyparty"], "name": "9001/copyparty", "platform": ["python", "cross-platform", "cli", "self-hosted"], "pushed_at": "2026-08-23T22:28:58+00:00", "repo": "9001/copyparty", "stars": 46408, "tags": ["file-server", "webdav", "ftp", "sftp", "tftp", "resumable-uploads", "media-indexer", "thumbnails", "nas", "single-file", "zeroconf", "deduplication", "web-server"], "topics": ["nas-frontend", "file-sharing", "file-server", "file-upload-server", "webdav-server", "ftp-server", "copyparty", "tftp-server"], "urls": [], "use_cases": ["self-host a personal cloud file server on a Raspberry Pi or old laptop", "share large files with resumable uploads over a web browser", "replace a NAS frontend with a lightweight Python server", "serve files over WebDAV, FTP, SFTP, or TFTP from one tool", "index and browse photos, music, and videos with thumbnails and search", "set up a quick file drop for LAN or internet access"], "what_it_is": "A portable, single-file Python file server that turns almost any device into a NAS-like file sharing server with accelerated resumable uploads, deduplication, and a rich web UI. It supports multiple protocols (HTTP, WebDAV, SFTP, FTP, TFTP, SMB/CIFS), media indexing, thumbnails, and search, all with optional dependencies.", "when_to_avoid": ["you need a distributed or clustered storage backend", "you require enterprise-grade multi-tenant storage with compliance features", "you want a GUI-managed NAS appliance rather than a config-file/script-driven server"], "when_to_choose": ["you want a full-featured file server with minimal dependencies (just Python)", "you need resumable uploads and downloads across many protocols in one tool", "you want media indexing, thumbnails, and search built in", "you need something portable enough to run from a single script on any device"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/copyparty", "repo": "9001/copyparty", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "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:12:09.753851+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:09.753851+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:21:36.899487+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "49d2a5e2285a0702e00f1be8e0d1e77a9d1e91b0d1705c0bc61224c9ec53a729", "fetched_at": "2026-08-28T04:12:09.753851+00:00", "kind": "readme", "missing": false, "url": "https://github.com/9001/copyparty"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2656, "days_push": 10, "days_rel": 16, "gap_med": 6.0, "n_releases_24m": 87}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}