{"adoption": {"forks": 102, "observed_at": "2026-08-28T04:03:48.260342+00:00", "stars": 1157}, "canonical_url": "https://ross.abutalabs.com/products/palmclaw", "card": {"archived": false, "artifact_type": "framework", "description": "[EMNLP 2026 Demo] \"PalmClaw: A Native On-Device Agent Framework for Mobile Phones\"", "domain": ["mobile-development", "android-tools", "large-language-models"], "enriched": true, "function": ["agent-framework", "mcp", "chatbot", "sdk"], "health_score": 100, "homepage": "https://modalitydance.github.io/PalmClaw/", "language": "Kotlin", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["ModalityDance/PalmClaw"], "name": "ModalityDance/PalmClaw", "platform": ["jvm"], "pushed_at": "2026-08-26T15:48:09+00:00", "repo": "ModalityDance/PalmClaw", "stars": 1157, "tags": ["on-device-agent", "android-app", "llm-api", "device-tools", "agpl", "ai-agents", "automation", "android", "mobile"], "topics": [], "urls": [], "use_cases": ["run an AI agent directly on my Android phone without a PC", "automate tasks on my phone using an LLM agent", "connect Telegram or Discord to an on-device assistant", "give an AI agent controlled access to contacts and calendar", "build mobile agent apps with device tool access", "schedule recurring agent tasks on my phone"], "what_it_is": "PalmClaw is an open-source agent framework that runs natively on Android phones, keeping sessions, memory, skills, tools, and the agent loop entirely on-device while using a user-configured LLM API for inference. It exposes structured device tools (files, contacts, calendar, hardware) with permissions, confirmations, and workspace boundaries, plus channels like Telegram, Discord, and email for task intake.", "when_to_avoid": ["you need an iOS or desktop agent framework", "you require fully local on-device model inference rather than a remote LLM API", "you need a permissive license for proprietary integration (AGPL-3.0)"], "when_to_choose": ["you want a fully on-device agent stack on Android with no PC or bridge", "you need structured, permission-controlled access to phone capabilities", "you want to connect messaging channels like Telegram or Slack to a personal agent"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/palmclaw", "repo": "ModalityDance/PalmClaw", "role": "main", "score": 82}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "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:03:48.260342+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:48.260342+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:32:00.819218+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "71fa7ba69e54cd27423e38fd6a774226a2dadca25246291d3f303863114d553c", "fetched_at": "2026-08-28T04:03:48.260342+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ModalityDance/PalmClaw"}, {"content_hash": "325a24c6d4f9e8c28f1305175fe19d41ab1ee1780c003690676b7f15fa42dedd", "fetched_at": "2026-08-29T12:36:51.900546+00:00", "kind": "homepage", "missing": false, "url": "https://modalitydance.github.io/PalmClaw/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 12, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["young"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 171, "days_push": 7, "days_rel": 7, "gap_med": 3, "n_releases_24m": 8}, "score": 82, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}