{"adoption": {"forks": 181, "observed_at": "2026-08-28T04:05:28.856981+00:00", "stars": 1732}, "canonical_url": "https://ross.abutalabs.com/products/oneterm", "card": {"archived": false, "artifact_type": "application", "description": "Provide secure access and control over all infrastructure", "domain": ["security", "self-hosted", "infrastructure-as-code"], "enriched": true, "function": ["auth", "authorization", "ssh", "security", "logging", "self-hosted", "gui"], "health_score": 74, "homepage": "https://www.v1ops.com", "language": "Go", "license": "AGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["veops/oneterm"], "name": "veops/oneterm", "platform": ["self-hosted", "go"], "pushed_at": "2026-02-03T09:28:49+00:00", "repo": "veops/oneterm", "stars": 1732, "tags": ["bastion-host", "jump-server", "pam", "session-recording", "rdp", "vnc", "4a", "audit", "devops", "linux", "docker", "web-server"], "topics": ["golang", "ssh", "terminal", "vue", "oneterm", "rdp", "vnc", "bastion"], "urls": [], "use_cases": ["secure ssh access to internal servers through a bastion", "record and audit terminal sessions of ops teams", "restrict direct access to critical systems behind a jump server", "manage credentials and password policies for server access", "give contractors time-limited access to infrastructure", "proxy rdp and vnc sessions to windows and desktop hosts"], "what_it_is": "OneTerm is a lightweight, flexible enterprise bastion host (jump server) built on the 4A model: authentication, authorization, account, and audit. It proxies SSH, RDP, and VNC access to internal infrastructure while recording sessions and enforcing access control.", "when_to_avoid": ["you need deep integrations with enterprise SSO/IdP ecosystems or large-scale multi-cluster support offered by mature tools like Teleport", "you require a fully open permissive license for commercial redistribution (AGPL-3.0 applies)", "you need cloud-maned zero-trust access rather than a self-hosted bastion"], "when_to_choose": ["you need a self-hosted, lightweight alternative to commercial bastion solutions like JumpServer or Teleport", "your team primarily uses SSH with some RDP/VNC needs", "session recording and audit logs are compliance requirements", "you want a simple web UI for managing server access permissions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/oneterm", "repo": "veops/oneterm", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "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:28.856981+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.856981+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:31:40.801549+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3e34583efc707dd5e6bd700c87a54ddee6428e77ec9b3ac2813233a99acb47b1", "fetched_at": "2026-08-28T04:05:28.856981+00:00", "kind": "readme", "missing": false, "url": "https://github.com/veops/oneterm"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 65, "longevity": 67, "rhythm": 48}, "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": 947, "days_push": 211, "days_rel": 351, "gap_med": 22, "n_releases_24m": 12}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}