{"adoption": {"forks": 205, "observed_at": "2026-08-28T04:04:20.702869+00:00", "stars": 1315}, "canonical_url": "https://ross.abutalabs.com/products/aerosandbox", "card": {"archived": false, "artifact_type": "library", "description": "Aircraft design optimization made fast through computational graph transformations (e.g., automatic differentiation). Composable analysis tools for aerodynamics, propulsion, structures, trajectory design, and much more.", "domain": ["simulation"], "enriched": true, "function": ["simulation", "math", "machine-learning"], "health_score": 75, "homepage": "https://peterdsharpe.github.io/AeroSandbox/", "language": "Jupyter Notebook", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["peterdsharpe/AeroSandbox"], "name": "peterdsharpe/AeroSandbox", "platform": ["python", "cross-platform"], "pushed_at": "2026-07-05T14:54:17+00:00", "repo": "peterdsharpe/AeroSandbox", "stars": 1315, "tags": ["aircraft-design", "aerodynamics", "automatic-differentiation", "multidisciplinary-design-optimization", "vortex-lattice-method", "xfoil", "cfd", "propulsion", "trajectory-optimization", "mdao", "optimization", "aerospace-engineering", "algorithms", "engineering"], "topics": ["aerodynamics", "airplane", "cfd", "mdo", "aircraft-design", "aerospace", "optimization", "vlm", "aerodynamic-analysis", "xfoil", "analysis", "3d-panel", "python", "aircraft", "automatic-differentiation", "mdao", "aerospace-engineering", "simulation"], "urls": [], "use_cases": ["optimize an aircraft's aerodynamics, structures, and propulsion simultaneously", "analyze airfoil performance with differentiable models like NeuralFoil", "run vortex-lattice or lifting-line aerodynamic analysis on a wing", "size a solar-electric aircraft or RC glider from scratch", "solve large multidisciplinary design optimization problems with thousands of variables", "compute stability derivatives for a whole aircraft", "model propeller, electric motor, or turbofan performance in an optimization loop"], "what_it_is": "AeroSandbox is a Python library for designing and optimizing aircraft and other engineered systems using automatic differentiation. It provides differentiable physics models for aerodynamics, structures, propulsion, and trajectory analysis, feeding exact gradients to nonlinear optimizers like IPOPT.", "when_to_avoid": ["you need high-fidelity RANS CFD or detailed CAD-level structural FEA", "you're not doing optimization and just need a standalone GUI-based analysis tool", "you work outside Python or need certified/validated industrial aerospace tooling"], "when_to_choose": ["you need gradient-based optimization of coupled aerospace physics models", "you want fast, differentiable aerodynamics analysis in pure Python", "you're doing conceptual or preliminary aircraft design and want design closure in seconds", "you prefer NumPy-style syntax without hand-deriving gradients"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/aerosandbox", "repo": "peterdsharpe/AeroSandbox", "role": "main", "score": 73}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "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:20.702869+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:20.702869+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:48:42.856676+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3341de6bb2a56d0dc68efc062438252ab852652285bba99cd811a5f3e7e57f5c", "fetched_at": "2026-08-28T04:04:20.702869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/peterdsharpe/AeroSandbox"}, {"content_hash": "acdc7aa9f45e10cdc91eaa94397ed52b182ae3a76eaaf644117d4b7a081d465c", "fetched_at": "2026-08-29T12:07:15.361500+00:00", "kind": "homepage", "missing": false, "url": "https://peterdsharpe.github.io/AeroSandbox/"}, {"content_hash": "a5641936cbfae87ec3869fd7a35cf608b1c0f88419c2bbc97997ed6f1ed486a5", "fetched_at": "2026-08-29T12:07:15.370952+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/aerosandbox/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 91, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2667, "days_push": 59, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 73, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}