{"adoption": {"forks": 81, "observed_at": "2026-08-28T04:05:48.547792+00:00", "stars": 1880}, "canonical_url": "https://ross.abutalabs.com/products/clipcascade", "card": {"archived": false, "artifact_type": "application", "description": "ClipCascade is a lightweight utility that automatically syncs the clipboard across devices, no key press required.", "domain": ["developer-tools", "self-hosted", "cross-platform", "privacy"], "enriched": true, "function": ["self-hosted", "security", "cryptography", "developer-tools"], "health_score": 86, "homepage": "https://clipcascade.sathvik.dev", "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Sathvik-Rao/ClipCascade"], "name": "Sathvik-Rao/ClipCascade", "platform": ["windows", "self-hosted", "cross-platform"], "pushed_at": "2026-05-04T01:06:52+00:00", "repo": "Sathvik-Rao/ClipCascade", "stars": 1880, "tags": ["clipboard-sync", "end-to-end-encryption", "multi-user", "file-sharing", "python", "macos", "linux", "android", "docker"], "topics": ["docker", "productivity", "clipboard-sync", "android", "linux", "windows", "clipboard", "macos", "self-hosting", "open-source", "files", "image", "multi-user", "text", "server"], "urls": [], "use_cases": ["sync clipboard between my pc and android phone automatically", "self-host a clipboard sync server with docker", "share copied text and images across windows mac and linux", "copy on one device and paste on another without pressing any keys", "secure encrypted clipboard sharing between multiple devices", "multi-user clipboard sync for a team"], "what_it_is": "ClipCascade is a lightweight, open-source utility that automatically syncs the clipboard across multiple devices without any key press. It supports text, images, and files with end-to-end encryption, and can be self-hosted via Docker or used with a hosted community server.", "when_to_avoid": ["you only need Apple ecosystem continuity features already built into macOS/iOS", "you want a fully cloud-managed service with no account or server at all", "you need offline-only clipboard history management rather than syncing"], "when_to_choose": ["you want automatic, keypress-free clipboard sync across desktop and mobile", "you prefer self-hosting your own sync server with end-to-end encryption", "you need cross-platform support including Android, Linux, macOS, and Windows", "you want to sync not just text but also images and files"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/clipcascade", "repo": "Sathvik-Rao/ClipCascade", "role": "main", "score": 75}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "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:48.547792+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:48.547792+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:13:59.985063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "2dce3aaab4430a7bd39f72993eb1a3cee4014c7b99ff1c720cacc6a4cd6adbb3", "fetched_at": "2026-08-28T04:05:48.547792+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Sathvik-Rao/ClipCascade"}, {"content_hash": "dd2ea360b33b391b85b36cbb7df437e0f5b6a1a1db5fa6206f81c6f10f349438", "fetched_at": "2026-08-29T10:53:14.286267+00:00", "kind": "homepage", "missing": false, "url": "https://clipcascade.sathvik.dev"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 80, "longevity": 52, "rhythm": 82}, "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": 730, "days_push": 122, "days_rel": 122, "gap_med": 10.5, "n_releases_24m": 15}, "score": 75, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}