{"adoption": {"forks": 116, "observed_at": "2026-08-28T04:05:29.959605+00:00", "stars": 1738}, "canonical_url": "https://ross.abutalabs.com/products/portable-secret", "card": {"archived": false, "artifact_type": "application", "description": "Better privacy without special software", "domain": ["security", "privacy", "files", "web-development"], "enriched": true, "function": ["cryptography", "security", "secrets-management"], "health_score": 20, "homepage": "https://mprimi.github.io/portable-secret/", "language": "HTML", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["mprimi/portable-secret"], "name": "mprimi/portable-secret", "platform": ["browser", "cross-platform"], "pushed_at": "2024-07-21T21:15:10+00:00", "repo": "mprimi/portable-secret", "stars": 1738, "tags": ["self-contained-html", "password-encryption", "web-crypto-api", "portable-secrets", "no-dependencies", "file-encryption", "web-server"], "topics": ["cryptography", "encryption", "javascript", "privacy", "secrets-management", "security", "web-cryptography-api", "password-manager"], "urls": [], "use_cases": ["send encrypted files over email to non-technical people", "store passwords and 2FA recovery codes in insecure places like cloud drives", "keep copies of important documents accessible from any browser", "share sensitive messages over insecure messaging channels", "carry encrypted secrets on a USB drive that decrypts offline", "encrypt images or documents without installing PGP or other tools"], "what_it_is": "Portable Secret is a tool that packs an encrypted payload and decryption JavaScript into a single self-contained HTML file, using the browser's Web Cryptography APIs. Anyone with the password can decrypt the secret in any modern browser, even offline, with no special software required.", "when_to_avoid": ["you need a full-featured password manager with vault sync and autofill", "you require authenticated multi-recipient or public-key encryption workflows", "you need enterprise-grade key management or audit trails", "you want an actively developed product rather than a demonstration hack"], "when_to_choose": ["recipients cannot be expected to install or learn encryption software like PGP", "you need decryption to work offline in any modern browser", "you want a dependency-free, self-contained encrypted file", "you need emergency access to secrets even if your devices are lost"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/portable-secret", "repo": "mprimi/portable-secret", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "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:29.959605+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.959605+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:30:36.858873+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "91339905348bf36cb14430246cfb6b65e0aa519747bf3360c0acb79dda7b8deb", "fetched_at": "2026-08-28T04:05:29.959605+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mprimi/portable-secret"}, {"content_hash": "d6d01590fd30e89f19503c940bbe871a043a90690d7e463bb1695a66128786b1", "fetched_at": "2026-08-29T11:07:39.266990+00:00", "kind": "homepage", "missing": false, "url": "https://mprimi.github.io/portable-secret/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1449, "days_push": 773, "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}}