{"adoption": {"forks": 449, "observed_at": "2026-08-28T04:07:00.555773+00:00", "stars": 2551}, "canonical_url": "https://ross.abutalabs.com/products/claude-desktop-buddy", "card": {"archived": false, "artifact_type": "library", "description": "Reference and an example for the Bluetooth API for makers in Claude Cowork & Claude Code Desktop", "domain": ["hardware", "developer-tools", "iot", "artificial-intelligence"], "enriched": true, "function": ["embedded", "sdk", "developer-tools", "documentation"], "health_score": 67, "homepage": null, "language": "C++", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["anthropics/claude-desktop-buddy"], "name": "anthropics/claude-desktop-buddy", "platform": ["embedded", "windows", "cpp"], "pushed_at": "2026-04-16T23:25:07+00:00", "repo": "anthropics/claude-desktop-buddy", "stars": 2551, "tags": ["bluetooth", "ble", "esp32", "firmware", "maker", "claude", "nordic-uart-service", "reference-implementation", "macos"], "topics": [], "urls": [], "use_cases": ["build custom hardware that displays Claude permission prompts", "approve or deny Claude agent actions from a physical device", "learn the BLE wire protocol for Claude desktop integrations", "flash example firmware onto an M5StickC Plus or ESP32", "create a desk pet that reacts to Claude session activity", "integrate maker devices with Claude Code over Bluetooth"], "what_it_is": "A reference implementation and example firmware for the Bluetooth (BLE) maker API in Claude Cowork and Claude Code Desktop, including an ESP32 desk-pet device that shows permission prompts and lets users approve or deny them from hardware. It documents the wire protocol (Nordic UART Service UUIDs, JSON schemas, folder push transport) so makers can build their own compatible devices.", "when_to_avoid": ["you need a general-purpose BLE library unrelated to Claude", "your hardware is not ESP32-based and you cannot port the display/button drivers", "you want a polished consumer product rather than a reference example", "you need integration with Claude on platforms other than macOS or Windows"], "when_to_choose": ["you want to build custom hardware that integrates with Claude desktop apps over BLE", "you need the authoritative wire protocol reference for the Claude maker Bluetooth API", "you have an M5StickC Plus or compatible ESP32 board and want a working example", "you want physical approve/deny controls for Claude agent permission prompts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/claude-desktop-buddy", "repo": "anthropics/claude-desktop-buddy", "role": "main", "score": 49}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "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:07:00.555773+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:00.555773+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:23:53.732360+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07136d7bfac9ff5d8f1f362545158046f76dffcc3f21b90720bce2ea716df431", "fetched_at": "2026-08-28T04:07:00.555773+00:00", "kind": "readme", "missing": false, "url": "https://github.com/anthropics/claude-desktop-buddy"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 10, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "young", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 146, "days_push": 139, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 49, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}