{"adoption": {"forks": 90, "observed_at": "2026-08-28T04:04:27.630572+00:00", "stars": 1347}, "canonical_url": "https://ross.abutalabs.com/products/oxideterm", "card": {"archived": false, "artifact_type": "application", "description": "AI-native workspace for local shells and remote machines.Zero Electron, zero OpenSSL, zero telemetry, and no app subscription.", "domain": ["developer-tools", "self-hosted", "privacy", "cross-platform"], "enriched": true, "function": ["ssh", "terminal-ui", "file-system", "gui", "agent-framework", "rag", "mcp", "developer-tools"], "health_score": 100, "homepage": "https://oxideterm.app", "language": "Rust", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["AnalyseDeCircuit/oxideterm"], "name": "AnalyseDeCircuit/oxideterm", "platform": ["windows", "rust", "cross-platform"], "pushed_at": "2026-08-26T15:52:39+00:00", "repo": "AnalyseDeCircuit/oxideterm", "stars": 1347, "tags": ["ssh-client", "sftp", "terminal-emulator", "remote-desktop", "port-forwarding", "byok", "local-first", "gpui", "russh", "no-electron", "mosh", "rdp", "vnc", "wasm-plugins", "command-line", "macos", "linux", "desktop"], "topics": ["filemanager", "rust", "sftp", "ssh-client", "terminal", "russh", "terminal-emulator", "mcp", "tool-calling", "agent", "bring-your-own-key", "rag", "ai-terminal", "devtools", "local-first", "port-forwarding", "gpui", "native-apps", "rdp"], "urls": [], "use_cases": ["manage ssh connections and sftp transfers in one app", "ai assistant that can see my terminal sessions and server files", "lightweight alternative to electron-based ssh clients", "edit remote files over sftp with syntax highlighting", "forward ports and browse remote desktops from a single workspace", "keep ssh sessions alive through network drops", "run commands across multiple servers at once"], "what_it_is": "OxideTerm is an open-source, local-first desktop workspace for remote server operations, combining SSH/Mosh/Telnet/Serial terminals, SFTP, RDP/VNC remote desktop, port forwarding, and a lightweight remote IDE in one native GPUI-rendered app. It includes an AI assistant (OxideSens) with bring-your-own-key access to live sessions and files, pure-Rust SSH via russh, and no Electron, telemetry, or subscription.", "when_to_avoid": ["you need a scriptable headless SSH CLI for automation pipelines", "you require features beyond its scope like full IDE refactoring or team session sharing", "you need a permissively licensed tool (GPL-3.0)", "you depend on X11 forwarding or legacy protocols not listed"], "when_to_choose": ["you want a native, GPU-rendered terminal/SSH workspace without Electron or bundled WebViews", "you need terminals, SFTP, port forwarding, and remote desktop unified per host", "you want an AI assistant over your own API key with local-first data control", "you prefer pure-Rust SSH with no OpenSSL/C dependencies and no telemetry"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/oxideterm", "repo": "AnalyseDeCircuit/oxideterm", "role": "main", "score": 78}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "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:27.630572+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:27.630572+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:42:35.427332+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d4dcad3eae52d0b93188b2481e2b7c9b6f5bc4177d2dcd57b1ec3f9643ac28a0", "fetched_at": "2026-08-28T04:04:27.630572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/AnalyseDeCircuit/oxideterm"}, {"content_hash": "992671205e73b90c0bac99f69b2decac2cad96d83b98650f21cebc43403548b0", "fetched_at": "2026-08-29T12:01:31.243063+00:00", "kind": "homepage", "missing": false, "url": "https://oxideterm.app"}, {"content_hash": "5c9523089d4534eb35226b02d08b548ecce88a3bf401f13aa2c215cb6776f33b", "fetched_at": "2026-08-29T12:01:31.246574+00:00", "kind": "site_page", "missing": false, "url": "https://oxideterm.app/docs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 16, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 224, "days_push": 7, "days_rel": 8, "gap_med": 0.5, "n_releases_24m": 91}, "score": 78, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}