{"adoption": {"forks": 18668, "observed_at": "2026-08-28T04:12:24.158051+00:00", "stars": 121900}, "canonical_url": "https://ross.abutalabs.com/products/rustdesk", "card": {"archived": false, "artifact_type": "application", "description": "An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.", "domain": ["cross-platform", "self-hosted", "networking", "privacy", "developer-tools"], "enriched": true, "function": ["gui", "networking", "p2p", "self-hosted", "security"], "health_score": 100, "homepage": "https://rustdesk.com", "language": "Rust", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "stable", "member_repos": ["rustdesk/rustdesk", "rustdesk/rustdesk-server"], "name": "RustDesk", "platform": ["windows", "cross-platform", "self-hosted"], "pushed_at": "2026-08-26T14:24:05+00:00", "repo": "rustdesk/rustdesk", "stars": 121900, "tags": ["remote-desktop", "remote-control", "teamviewer-alternative", "vnc", "rdp", "flutter", "rust", "screen-sharing", "file-transfer", "macos", "linux", "android", "ios"], "topics": ["remote-control", "remote-desktop", "teamviewer", "anydesk", "vnc", "rdp", "rust", "p2p", "flutter", "flutter-apps", "dart", "rust-lang", "wayland", "linux", "android", "flatpak", "ios", "macos", "windows"], "urls": [], "use_cases": ["remotely access my home computer from work", "self-hosted teamviewer alternative", "help a family member fix their pc remotely", "control a server gui without ssh", "transfer files between remote machines", "provide remote it support to clients", "access my mac from my android phone"], "what_it_is": "RustDesk is an open-source remote desktop application written in Rust with a Flutter UI, working as a self-hostable alternative to TeamViewer and AnyDesk. It supports cross-platform remote control, file transfer, and P2P connections with optional self-hosted rendezvous/relay servers.", "when_to_avoid": ["you only need terminal/SSH access to headless servers", "you need enterprise features like centralized user management without the Pro server", "you require official compliance certifications or commercial support contracts", "you need lightweight screen sharing embedded in a web browser only"], "when_to_choose": ["you want full control over your remote desktop data by self-hosting the server", "you need a free, cross-platform alternative to TeamViewer or AnyDesk", "you need to support Windows, macOS, Linux, Android, and iOS clients", "you want P2P connections that work out of the box with no configuration"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/rustdesk/rustdesk", "repo": "rustdesk/rustdesk", "role": "main", "score": 93}, {"path": "/repos/rustdesk/rustdesk-server", "repo": "rustdesk/rustdesk-server", "role": "backend", "score": 87}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "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:24.158051+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:24.158051+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:11:35.853905+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "196dac6bf69e939c391fe86db238cc7d7033e7fe83e04a85eb00f434c651aa86", "fetched_at": "2026-08-28T04:12:24.158051+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rustdesk/rustdesk"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 80}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2165, "days_push": 7, "days_rel": 58, "gap_med": 32.0, "n_releases_24m": 19}, "score": 93, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}