{"adoption": {"forks": 105, "observed_at": "2026-08-28T04:03:26.804554+00:00", "stars": 1065}, "canonical_url": "https://ross.abutalabs.com/products/codetainer", "card": {"archived": false, "artifact_type": "service", "description": "A Docker container in your browser.", "domain": ["developer-tools", "web-development", "self-hosted"], "enriched": true, "function": ["http-server", "api-framework", "websocket", "web-framework"], "health_score": 20, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["codetainerapp/codetainer"], "name": "codetainerapp/codetainer", "platform": ["go", "self-hosted"], "pushed_at": "2018-05-09T09:11:55+00:00", "repo": "codetainerapp/codetainer", "stars": 1065, "tags": ["docker-api", "browser-terminal", "code-sandbox", "embeddable-terminal", "go", "containers", "linux", "docker", "web-server"], "topics": [], "urls": [], "use_cases": ["embed a browser terminal into a web app", "run disposable code sandboxes in Docker", "give users interactive shell access via the browser", "build an online playground for tutorials", "attach to docker containers through a web UI"], "what_it_is": "Codetainer is a Go web service that creates Docker-based code sandboxes viewable and controllable through an embeddable HTML terminal in the browser. It exposes APIs to create, view, and attach to containers in real time, similar to an open-source CodePicnic.", "when_to_avoid": ["you need a maintained project - the last release was in 2018", "you need modern Docker API compatibility or security hardening", "you want Kubernetes or non-Docker sandboxing"], "when_to_choose": ["you need embeddable browser terminals backed by Docker containers", "you want a self-hosted alternative to commercial sandbox services", "you're building interactive tutorials or demos with live shells"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/codetainer", "repo": "codetainerapp/codetainer", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "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:26.804554+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:26.804554+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:55:29.412757+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "823801a1c8f8b6fe9824d3a1fc0a097252d2f63022240b6f6e2f8824772c4ff3", "fetched_at": "2026-08-28T04:03:26.804554+00:00", "kind": "readme", "missing": false, "url": "https://github.com/codetainerapp/codetainer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4084, "days_push": 3038, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}