{"adoption": {"forks": 153, "observed_at": "2026-08-28T04:04:55.490686+00:00", "stars": 1508}, "canonical_url": "https://ross.abutalabs.com/products/cryptgeon", "card": {"archived": false, "artifact_type": "service", "description": "cryptgeon is a secure, open source note / file sharing service inspired by PrivNote written in rust & svelte.", "domain": ["privacy", "security", "self-hosted", "web-development"], "enriched": true, "function": ["cryptography", "http-server", "cli", "file-upload", "security"], "health_score": 93, "homepage": "https://cryptgeon.org/", "language": "Svelte", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["cupcakearmy/cryptgeon"], "name": "cupcakearmy/cryptgeon", "platform": ["self-hosted", "cli", "rust"], "pushed_at": "2026-06-28T16:52:01+00:00", "repo": "cupcakearmy/cryptgeon", "stars": 1508, "tags": ["self-destructing-notes", "client-side-encryption", "ephemeral-sharing", "privnote-alternative", "secret-sharing", "svelte", "web-server", "docker", "nodejs"], "topics": ["private-notes", "privnote", "secure-notes", "note-sharing", "file-sharing"], "urls": [], "use_cases": ["share a self-destructing secret note", "send sensitive files with a one-time link", "self-host a privnote alternative", "share passwords securely with expiration", "send encrypted notes from the command line", "share secrets without the server being able to read them"], "what_it_is": "Cryptgeon is a secure, open-source note and file sharing service inspired by PrivNote, built with Rust and Svelte. Notes are encrypted client-side with AES-GCM, stored in memory only, and self-destruct after view or time limits; it ships as a self-hostable server, web app, and CLI client.", "when_to_avoid": ["you need persistent, long-term document storage", "you require guaranteed view limits across multiple server instances behind shared Redis", "you need compliance-grade audit logging or access controls"], "when_to_choose": ["you need ephemeral, zero-knowledge sharing of text or files", "you want to self-host a PrivNote-like service", "you need view-count or time-limited secret links", "you want a CLI for scripted secret sharing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cryptgeon", "repo": "cupcakearmy/cryptgeon", "role": "main", "score": 92}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "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:55.490686+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:55.490686+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:32:32.095509+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c5026002ba1375f719867137526cc9ca68add66d2a0e9cb960c3d4799aaa75c5", "fetched_at": "2026-08-28T04:04:55.490686+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cupcakearmy/cryptgeon"}, {"content_hash": "9a4eaf941ca58296bb2bb3e022dde85643c0c1daa198b644f6866b75b88c79c8", "fetched_at": "2026-08-29T11:36:53.048788+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/cryptgeon"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 89, "longevity": 100, "rhythm": 90}, "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": 1950, "days_push": 66, "days_rel": 69, "gap_med": 29.0, "n_releases_24m": 7}, "score": 92, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}