{"adoption": {"forks": 152, "observed_at": "2026-08-28T04:06:37.390657+00:00", "stars": 2325}, "canonical_url": "https://ross.abutalabs.com/products/labml", "card": {"archived": false, "artifact_type": "library", "description": "🔎 Monitor deep learning model training and hardware usage from your mobile phone 📱", "domain": ["machine-learning", "deep-learning", "data-visualization", "monitoring"], "enriched": true, "function": ["monitoring", "data-visualization", "machine-learning", "deep-learning", "analytics"], "health_score": 29, "homepage": "https://labml.ai", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["labmlai/labml"], "name": "labmlai/labml", "platform": ["python", "cross-platform", "self-hosted"], "pushed_at": "2025-04-10T09:30:35+00:00", "repo": "labmlai/labml", "stars": 2325, "tags": ["experiment-tracking", "pytorch", "tensorflow", "keras", "tensorboard-alternative", "hardware-monitoring", "mobile-dashboard", "mobile", "web-server"], "topics": ["machine-learning", "deep-learning", "pytorch", "experiment", "analytics", "visualization", "tensorboard", "mobile", "keras", "tensorflow", "tensorflow2", "keras-tensorflow", "pytorch-lightning", "fastai"], "urls": [], "use_cases": ["monitor deep learning training runs from my phone", "track loss and accuracy curves during pytorch training", "log gpu and hardware usage while training models", "self-hosted tensorboard alternative for experiment tracking", "record experiment configs and git commits automatically", "visualize custom metrics during machine learning experiments"], "what_it_is": "A Python library for tracking and monitoring deep learning experiments, with a self-hostable server app for viewing metrics and hardware usage from a mobile phone or laptop. It integrates with PyTorch, TensorFlow, Keras, PyTorch Lightning, and FastAI with minimal code.", "when_to_avoid": ["you need a managed cloud experiment platform with team collaboration features", "you require full MLOps pipelines beyond tracking and visualization", "you don't want to run your own MongoDB-backed server"], "when_to_choose": ["you want lightweight, two-line integration for experiment tracking in PyTorch or TensorFlow", "you prefer a self-hosted monitoring server with mobile access", "you need hardware usage monitoring alongside training metrics"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/labml", "repo": "labmlai/labml", "role": "main", "score": 30}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/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:06:37.390657+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:37.390657+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:38:24.284408+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eca3de4214a3501dbf2a3bedca3370790720923a317c28e6183fd23aff38d9c5", "fetched_at": "2026-08-28T04:06:37.390657+00:00", "kind": "readme", "missing": false, "url": "https://github.com/labmlai/labml"}, {"content_hash": "bf2ff9da0563326f83c46cdeed7752c0ce03ba61f2aae48b68c48ec4bdb21cb6", "fetched_at": "2026-08-29T10:18:46.882346+00:00", "kind": "homepage", "missing": false, "url": "https://labml.ai"}, {"content_hash": "485d1078b2e0ea29283052ed592ce8f596eb1971eb14a46434dd1e2d4274721d", "fetched_at": "2026-08-29T10:18:46.891750+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/labml/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 15, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2847, "days_push": 510, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 30, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}