{"adoption": {"forks": 312, "observed_at": "2026-08-28T04:09:04.321192+00:00", "stars": 4992}, "canonical_url": "https://ross.abutalabs.com/products/brush", "card": {"archived": false, "artifact_type": "application", "description": "3D Reconstruction for all", "domain": ["computer-vision", "graphics", "machine-learning", "cross-platform"], "enriched": true, "function": ["machine-learning", "graphics", "image-processing", "cli", "gui"], "health_score": 94, "homepage": null, "language": "Rust", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["ArthurBrussee/brush"], "name": "ArthurBrussee/brush", "platform": ["cross-platform", "windows", "wasm"], "pushed_at": "2026-08-17T22:38:24+00:00", "repo": "ArthurBrussee/brush", "stars": 4992, "tags": ["gaussian-splatting", "3d-reconstruction", "webgpu", "burn", "rust", "photogrammetry", "splat-viewer", "nerfstudio", "colmap", "web", "android", "macos", "linux", "gpu"], "topics": ["gaussian-splatting", "graphics", "reconstruction"], "urls": [], "use_cases": ["train gaussian splatting models from COLMAP or Nerfstudio datasets", "reconstruct 3D scenes from photos without CUDA", "view .ply and compressed splat files in the browser", "run 3D reconstruction on Android or in a web demo", "visualize training dynamics live with a viewer or rerun", "animate splat files from zip or delta-frame plys"], "what_it_is": "Brush is a 3D reconstruction engine using Gaussian splatting, built in Rust on the Burn ML framework and WebGPU. It trains and renders splat scenes natively on desktop, mobile, and in the browser, and doubles as a splat viewer with a CLI.", "when_to_avoid": ["you need the full feature set or ecosystem maturity of the original CUDA-based 3D Gaussian Splatting implementation", "you require Safari/Firefox browser support today", "you need heavy ML training infrastructure beyond splatting"], "when_to_choose": ["you need cross-platform gaussian splatting without CUDA dependencies", "you want to train or view splats on AMD/Intel GPUs, mobile, or the browser", "you want dependency-free binaries for 3D reconstruction"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/brush", "repo": "ArthurBrussee/brush", "role": "main", "score": 65}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "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:09:04.321192+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:04.321192+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:17:38.654680+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "be61ce442ec61cc2f1fe26b020853debce06d9eb7f770259189f2cabd0cd88ae", "fetched_at": "2026-08-28T04:09:04.321192+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ArthurBrussee/brush"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 65, "rhythm": 23}, "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": 922, "days_push": 16, "days_rel": 353, "gap_med": 152.5, "n_releases_24m": 3}, "score": 65, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}