{"adoption": {"forks": 295, "observed_at": "2026-08-28T04:10:08.565174+00:00", "stars": 7882}, "canonical_url": "https://ross.abutalabs.com/products/deskhop", "card": {"archived": false, "artifact_type": "application", "description": "Fast Desktop Switching Device", "domain": ["hardware", "embedded-systems", "developer-tools", "cross-platform"], "enriched": true, "function": ["embedded", "developer-tools"], "health_score": 93, "homepage": null, "language": "C", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["hrvach/deskhop"], "name": "hrvach/deskhop", "platform": ["embedded", "windows", "cross-platform"], "pushed_at": "2026-06-27T07:54:08+00:00", "repo": "hrvach/deskhop", "stars": 7882, "tags": ["kvm", "raspberry-pi-pico", "rp2040", "diy", "input-switching", "open-source-hardware", "hid-proxy", "hardware", "usb", "hid", "linux", "macos"], "topics": ["c", "desktop", "diy", "embedded", "keyboard", "mouse", "pi", "pico", "raspberry", "rp2040", "switch", "kvm", "arm", "hid", "raspberry-pi", "usb"], "urls": [], "use_cases": ["share one keyboard and mouse between two computers", "switch desktops by dragging the mouse across monitors", "switch computers with a keyboard hotkey", "replace a clumsy USB KVM switch box", "use one input pair across Linux, macOS, and Windows machines"], "what_it_is": "DeskHop is an open-source hardware/firmware project that turns two Raspberry Pi Pico (RP2040) boards into a fast KVM-like keyboard and mouse switch between two computers. It forwards HID input based on hotkeys or by dragging the mouse pointer across monitors, with no software installed on the host machines.", "when_to_avoid": ["you need to switch more than two computers", "you want video/monitor switching, not just keyboard and mouse", "you don't want to assemble or flash your own hardware"], "when_to_choose": ["you use two computers and want instant, seamless input switching", "you want a DIY hardware solution with cheap components and no host software", "you need galvanic isolation between two machines"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/deskhop", "repo": "hrvach/deskhop", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "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:10:08.565174+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:08.565174+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:33:42.970260+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6b1d58f8d91df49d05d468c815dff07611afff442af933de4066ccfe47652339", "fetched_at": "2026-08-28T04:10:08.565174+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hrvach/deskhop"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 70, "rhythm": 66}, "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": 983, "days_push": 67, "days_rel": 68, "gap_med": 101.0, "n_releases_24m": 7}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}