{"adoption": {"forks": 62, "observed_at": "2026-08-28T04:04:18.398695+00:00", "stars": 1303}, "canonical_url": "https://ross.abutalabs.com/products/bycelium-pyflow", "card": {"archived": false, "artifact_type": "application", "description": "An open-source tool for visual and modular block programming in python", "domain": ["developer-tools", "data-science", "education"], "enriched": true, "function": ["developer-tools", "gui", "interpreter"], "health_score": 20, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "maintenance", "member_repos": ["Bycelium/PyFlow"], "name": "Bycelium/PyFlow", "platform": ["python", "cross-platform"], "pushed_at": "2022-08-05T13:45:35+00:00", "repo": "Bycelium/PyFlow", "stars": 1303, "tags": ["visual-programming", "node-based", "jupyter-alternative", "notebook", "graph-structured-code", "desktop"], "topics": [], "urls": [], "use_cases": ["visual block programming in python", "jupyter notebook alternative with 2d canvas", "run python code blocks in dependency order automatically", "convert jupyter notebooks to visual graphs", "teach python with a visual node-based editor"], "what_it_is": "PyFlow is an open-source visual programming tool that lets users arrange Python code blocks on an infinite 2D canvas and link them to define execution dependencies. It automatically runs blocks in dependency order and can convert between PyFlow graphs and Jupyter notebooks.", "when_to_avoid": ["you need a mature, actively developed tool - the last release was 2022", "you only need a standard linear notebook workflow", "you require commercial-friendly licensing - it is GPL-3.0"], "when_to_choose": ["you prefer spatial, node-based code organization over linear notebooks", "you want automatic topological execution of interdependent code blocks", "you need to convert existing Jupyter notebooks into a visual graph format"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bycelium-pyflow", "repo": "Bycelium/PyFlow", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "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:04:18.398695+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:18.398695+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:51:10.246079+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "41e38079f7651d5eefb4d1285467e30e2e7a8c5814f18a8e6fcb74265e84c844", "fetched_at": "2026-08-28T04:04:18.398695+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Bycelium/PyFlow"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1817, "days_push": 1489, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}