{"adoption": {"forks": 11138, "observed_at": "2026-08-28T04:12:23.043272+00:00", "stars": 85199}, "canonical_url": "https://ross.abutalabs.com/products/openhands", "card": {"archived": false, "artifact_type": "application", "description": "🙌 OpenHands: AI-Driven Development", "domain": ["artificial-intelligence", "developer-tools", "large-language-models"], "enriched": true, "function": ["agent-framework", "llm-inference", "cli", "developer-tools", "workflow-automation"], "health_score": 100, "homepage": "https://openhands.dev", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["OpenHands/OpenHands", "OpenHands/software-agent-sdk"], "name": "OpenHands", "platform": ["cross-platform", "self-hosted", "cli"], "pushed_at": "2026-08-27T00:11:03+00:00", "repo": "OpenHands/OpenHands", "stars": 85199, "tags": ["coding-agents", "acp", "ai-driven-development", "agent-orchestration", "self-hosted-agents", "claude-code", "codex", "ai-agents", "automation", "docker", "web-server"], "topics": ["agent", "artificial-intelligence", "llm", "chatgpt", "claude-ai", "cli", "developer-tools", "gpt", "openai"], "urls": [], "use_cases": ["run AI coding agents locally or in Docker", "automate GitHub issue triage and task decomposition", "generate reports and publish them to Slack with agents", "orchestrate multiple agent backends from one control center", "self-host an always-on AI engineering team", "connect third-party agents like Claude Code and Codex"], "what_it_is": "OpenHands (Agent Canvas) is a self-hosted developer control center for running AI coding agents like OpenHands, Claude Code, Codex, and Gemini across local, remote, and cloud backends. It lets developers start agent conversations and automate engineering tasks such as generating reports to Slack or decomposing GitHub issues into tasks.", "when_to_avoid": ["you need a simple single-shot code completion inside your editor only", "you don't want to manage agent backends or self-hosted infrastructure", "your workflows require no LLM involvement"], "when_to_choose": ["you want a self-hosted hub to run and manage multiple coding agents", "you need to automate repetitive development workflows with LLM agents", "you want agents to run in containers, VMs, or your own infrastructure"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/OpenHands/OpenHands", "repo": "OpenHands/OpenHands", "role": "main", "score": 87}, {"path": "/repos/OpenHands/software-agent-sdk", "repo": "OpenHands/software-agent-sdk", "role": "sdk", "score": 81}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "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:23.043272+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:12:23.043272+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:13:53.713403+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "55b58a4575e5b75291d17213d5220d691f8e23d9ecf92587ef6966c1df3b97fd", "fetched_at": "2026-08-28T04:12:23.043272+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenHands/OpenHands"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 64, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 903, "days_push": 7, "days_rel": 12, "gap_med": 4, "n_releases_24m": 124}, "score": 87, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}