{"adoption": {"forks": 40, "observed_at": "2026-08-28T04:04:45.343285+00:00", "stars": 1447}, "canonical_url": "https://ross.abutalabs.com/products/textual-web", "card": {"archived": false, "artifact_type": "service", "description": "Run TUIs and terminals in your browser", "domain": ["web-development", "developer-tools"], "enriched": true, "function": ["http-server", "terminal-ui", "developer-tools"], "health_score": 25, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "experimental", "member_repos": ["Textualize/textual-web"], "name": "Textualize/textual-web", "platform": ["python", "cli", "cross-platform"], "pushed_at": "2024-08-30T16:00:35+00:00", "repo": "Textualize/textual-web", "stars": 1447, "tags": ["tui", "textual", "terminal-in-browser", "remote-access", "websocket", "command-line", "web-server"], "topics": ["rich", "terminal", "textual"], "urls": [], "use_cases": ["run terminal user interfaces in the browser", "share a TUI app with a public URL", "access my terminal remotely through a web page", "serve multiple Textual apps from one config", "demo CLI tools to others without installing anything"], "what_it_is": "textual-web is a Python service that publishes Textual TUI apps and terminal sessions to the browser via public URLs. It lets anyone with internet access interact with terminal applications running on your machine.", "when_to_avoid": ["you need hardened, production-grade remote access with strong authentication", "your apps are not Textual-based and you only need static web hosting", "the project is still in beta and you require guaranteed stability"], "when_to_choose": ["you have Textual apps you want to expose on the web", "you need browser access to a terminal or TUI without SSH", "you want to demo terminal apps via shareable links"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/textual-web", "repo": "Textualize/textual-web", "role": "main", "score": 19}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "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:45.343285+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:45.343285+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:36:05.891348+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8f0cc9898b2607d06ad8ae8bd200ea035e4d21af4f86bd405ec00659fc2af71a", "fetched_at": "2026-08-28T04:04:45.343285+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Textualize/textual-web"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 79, "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": 1114, "days_push": 733, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 19, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}