{"adoption": {"forks": 91, "observed_at": "2026-09-03T02:15:11.644903+00:00", "stars": 1053}, "canonical_url": "https://ross.abutalabs.com/products/endo", "card": {"archived": false, "artifact_type": "framework", "description": "Endo is a distributed secure JavaScript sandbox, based on SES", "domain": ["security", "developer-tools", "microservices", "web-development"], "enriched": true, "function": ["security", "plugin-system", "rpc", "concurrency", "serialization"], "health_score": 100, "homepage": "https://endojs.org/", "language": "JavaScript", "license": "Apache-2.0", "license_family": "permissive", "maturity": "stable", "member_repos": ["endojs/endo"], "name": "endojs/endo", "platform": ["browser", "cross-platform"], "pushed_at": "2026-09-03T01:31:23+00:00", "repo": "endojs/endo", "stars": 1053, "tags": ["ses", "hardened-javascript", "sandbox", "object-capabilities", "capability-based-security", "supply-chain-security", "prototype-pollution", "eventual-send", "captp", "ocapn", "compartments", "least-authority", "secure-ecmascript", "multi-tenant", "nodejs"], "topics": ["capabilities", "captp", "hardened", "javascript", "multi-tenant", "ocaps", "powerbox", "prototype-pollution", "security", "supply-chain", "sandbox"], "urls": [], "use_cases": ["sandbox untrusted third-party javascript code inside my application", "run third-party plugins with least privilege in node or the browser", "protect my app against supply chain attacks from npm dependencies", "prevent runtime prototype pollution attacks in javascript", "call methods on remote objects securely across processes or the network", "harden javascript globals with frozen intrinsics and secure compartments", "pass messages safely between web workers", "build a multi-tenant system where components don't trust each other"], "what_it_is": "Endo is a JavaScript framework for building secure plugin systems and resisting supply chain attacks, built on the SES (Secure ECMAScript) implementation of Hardened JavaScript. It provides in-process confinement via compartments, object-capability security, and distributed communication through Eventual Send and capability transport protocols such as CapTP and OCapN.", "when_to_avoid": ["You only need general-purpose RPC or JSON serialization without security or capability guarantees", "You need to sandbox non-JavaScript code or require strong OS/process-level isolation", "Your codebase cannot adopt hardened JavaScript constraints such as frozen intrinsics and mandatory strict mode"], "when_to_choose": ["You need to execute untrusted or third-party JavaScript with strict in-process confinement rather than OS-level isolation", "You are building a plugin or smart-contract system where components must not gain ambient authority", "You need capability-based, transport-agnostic message passing between workers, processes, or network peers", "You maintain a security-critical web app or browser extension (like MetaMask) that must mitigate supply chain attacks"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/endo", "repo": "endojs/endo", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:11.644903+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:00:22.422207+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "02f5434a00a94d48452d6bd5c7e5e0afa95e63c95c5a41500992da0669430a33", "fetched_at": "2026-09-03T02:15:11.644903+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endojs/endo"}, {"content_hash": "df7440f5444231a3c5ebddee5f7be18a1f94f6769a4f1cdcca0efe120d82a9e5", "fetched_at": "2026-08-29T13:01:42.880722+00:00", "kind": "homepage", "missing": false, "url": "https://endojs.org/"}, {"content_hash": "47dc3fa09beb379b35286cde5024cab41802ac2a3d33797f238cdaab24ab22c4", "fetched_at": "2026-08-29T13:01:42.890598+00:00", "kind": "site_page", "missing": false, "url": "https://endojs.org/about"}, {"content_hash": "fbd8572b59958a04dd72862ac5da99c93a271070f0815588314740476a2e34ad", "fetched_at": "2026-08-29T13:01:42.892630+00:00", "kind": "site_page", "missing": false, "url": "http://docs.endojs.org/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 86}, "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": 2492, "days_push": 0, "days_rel": 16, "gap_med": 0, "n_releases_24m": 102}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}