{"adoption": {"forks": 263, "observed_at": "2026-08-28T04:05:24.387231+00:00", "stars": 1702}, "canonical_url": "https://ross.abutalabs.com/products/openadapt", "card": {"archived": false, "artifact_type": "framework", "description": "Compile a demonstrated GUI workflow into a deterministic, locally executable program. Zero model calls on healthy runs; governed repair; halts instead of guessing. Launcher for openadapt-flow: pip install openadapt", "domain": ["developer-tools", "healthcare", "self-hosted"], "enriched": true, "function": ["workflow-automation", "agent-framework", "computer-vision", "gui", "testing"], "health_score": 100, "homepage": "https://www.OpenAdapt.AI", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["OpenAdaptAI/OpenAdapt"], "name": "OpenAdaptAI/OpenAdapt", "platform": ["python", "cross-platform", "windows", "cli", "self-hosted"], "pushed_at": "2026-08-26T20:06:30+00:00", "repo": "OpenAdaptAI/OpenAdapt", "stars": 1702, "tags": ["rpa", "gui-automation", "desktop-automation", "browser-automation", "computer-use-agents", "deterministic-replay", "automation-from-demonstration", "rdp", "citrix", "process-automation", "verification", "local-first", "automation", "macos", "linux"], "topics": ["process-automation", "python", "agents", "ai-agents", "computer-use", "computer-use-agents", "desktop-automation", "gui-automation", "local-first", "workflow-automation", "browser-automation", "citrix", "deterministic-replay", "effect-verification", "healthcare-automation", "rdp", "rpa", "ui-automation", "demonstration-compiler", "automation-from-demonstration"], "urls": [], "use_cases": ["automate repetitive data entry into legacy desktop apps with no API", "record a GUI task once and replay it deterministically", "automate workflows over RDP or Citrix virtual desktops", "verify that automated browser actions actually produced the expected result", "automate patient data entry in healthcare systems with audit evidence", "replace manual RPA scripting by demonstrating the task instead of coding it"], "what_it_is": "OpenAdapt is a Python framework that compiles a demonstrated GUI workflow into an inspectable, deterministic, locally executable program for browser, desktop, RDP, or Citrix/VDI surfaces. Healthy runs make zero generative-model calls, verify declared results before reporting success, and halt with evidence instead of guessing when verification fails.", "when_to_avoid": ["you need fully autonomous agents that improvise novel UI interactions", "the workflow has no stable, demonstrable structure or changes constantly", "you only need simple API-to-API integration without any GUI surface", "you require a production-admitted, qualified deployment today (admission state is currently not actively admitted)"], "when_to_choose": ["the task is repeated GUI work on an application with no practical write API", "you need proof that each consequential step succeeded before reporting success", "you want local-first, MIT-licensed automation with no model calls on healthy runs", "a wrong action has operational, financial, or compliance cost and halting is preferable to guessing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openadapt", "repo": "OpenAdaptAI/OpenAdapt", "role": "main", "score": 97}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "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:05:24.387231+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:24.387231+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:37:39.367453+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb3183623c0e210fa372e26f5fd6de74fb792144ccea188c1e4036084a798836", "fetched_at": "2026-08-28T04:05:24.387231+00:00", "kind": "readme", "missing": false, "url": "https://github.com/OpenAdaptAI/OpenAdapt"}, {"content_hash": "e44669bd711af4aacbd76b867ec0ff394217b66046057ebf43347b643d863a0b", "fetched_at": "2026-08-29T11:12:12.496720+00:00", "kind": "homepage", "missing": false, "url": "https://www.OpenAdapt.AI"}, {"content_hash": "16b3b8612dfc93ef44fb0a523550390429bee1a0b19e91482066f165b99cd4aa", "fetched_at": "2026-08-29T11:12:12.501506+00:00", "kind": "site_page", "missing": false, "url": "https://docs.openadapt.ai"}, {"content_hash": "a081a3fbe3df769d40f44a6f8864aa59cda0bd6d13d70d240b60426ff4ad5174", "fetched_at": "2026-08-29T11:12:12.503249+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/about"}, {"content_hash": "5d9f3295e802ce831e3c13c6849da206fda685d9905a2a79b07646a3d1222609", "fetched_at": "2026-08-29T11:12:12.504723+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/openadapt/json"}, {"content_hash": "36a8972fee9272cdd1b67094ba2af7b3c0d3a1adfb9b32b7c3ca6269772c1762", "fetched_at": "2026-08-29T11:12:12.499638+00:00", "kind": "site_page", "missing": false, "url": "https://openadapt.ai/pricing"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 88, "rhythm": 99}, "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": 1239, "days_push": 7, "days_rel": 7, "gap_med": 0.5, "n_releases_24m": 57}, "score": 97, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}