{"adoption": {"forks": 498, "observed_at": "2026-08-28T04:04:35.010379+00:00", "stars": 1386}, "canonical_url": "https://ross.abutalabs.com/products/opscloud4", "card": {"archived": false, "artifact_type": "application", "description": "云上运维", "domain": ["cloud-computing", "self-hosted", "infrastructure-as-code"], "enriched": true, "function": ["deployment", "ssh", "web-framework", "auth", "authorization", "container-orchestration", "ci-cd", "monitoring"], "health_score": 55, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["ixrjog/opscloud4"], "name": "ixrjog/opscloud4", "platform": ["jvm", "self-hosted"], "pushed_at": "2025-12-25T07:08:07+00:00", "repo": "ixrjog/opscloud4", "stars": 1386, "tags": ["bastion-host", "web-terminal", "continuous-delivery", "ansible", "gitlab", "jenkins", "rbac", "mfa", "spring-boot", "cloud-operations", "devops", "containers", "docker", "kubernetes", "web-server"], "topics": ["devops", "ldap", "aws", "kubernetes", "cicd", "ed25519", "springboot", "ssh", "web-terminal"], "urls": [], "use_cases": ["manage ssh access to servers through a web bastion host", "run kubernetes canary and blue-green deployments with approval controls", "execute ansible playbooks across many servers from one console", "give developers web terminals into kubernetes containers with command sync", "centralize server and container assets with rbac and mfa", "sync gitlab public keys for ssh login automation"], "what_it_is": "OpsCloud4 is a self-hosted cloud operations platform built with Spring Boot that provides a bastion host with web/SSH terminals, Kubernetes continuous delivery (Leo), and server batch task execution via Ansible. It integrates LDAP, GitLab, Jenkins, and cloud assets with RBAC and MFA access control.", "when_to_avoid": ["you only need a simple ci/cd pipeline without bastion or asset management", "you prefer lightweight single-purpose tools rather than a full operations platform", "your stack is not jvm/java-friendly or you cannot run mysql and redis dependencies"], "when_to_choose": ["you need a self-hosted bastion/jump server with web terminal and ssh-server support", "your team deploys to kubernetes and wants visualized, policy-controlled releases", "you want unified cloud asset management with ldap, rbac, and mfa in one platform"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/opscloud4", "repo": "ixrjog/opscloud4", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "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:35.010379+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:35.010379+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:39:54.713525+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "dcd80ca61c53ef2ce70ea2f5f0b9fcb58b7fe7d77e52284405b38dcb8933aac5", "fetched_at": "2026-08-28T04:04:35.010379+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ixrjog/opscloud4"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 59, "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": 3008, "days_push": 251, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}