{"adoption": {"forks": 705, "observed_at": "2026-08-28T04:05:28.457638+00:00", "stars": 1728}, "canonical_url": "https://ross.abutalabs.com/products/pupil", "card": {"archived": false, "artifact_type": "application", "description": "Open source eye tracking ", "domain": ["computer-vision", "hardware", "developer-tools"], "enriched": true, "function": ["computer-vision", "machine-learning", "gui", "plugin-system", "sdk"], "health_score": 79, "homepage": "https://pupil-labs.com", "language": "Python", "license": "LGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["pupil-labs/pupil"], "name": "pupil-labs/pupil", "platform": ["windows", "python", "cpp", "cross-platform"], "pushed_at": "2026-08-17T21:26:37+00:00", "repo": "pupil-labs/pupil", "stars": 1728, "tags": ["eye-tracking", "gaze-estimation", "pupil-core", "wearable", "real-time-api", "research-software", "research", "linux", "macos"], "topics": ["pupil", "eye-tracking", "open-source"], "urls": [], "use_cases": ["run eye tracking studies with wearable hardware", "record and replay gaze data from eye tracking sessions", "integrate real-time gaze data into my application over the network", "develop custom plugins for eye tracking analysis", "analyze fixations, blinks, and pupil diameter from recordings", "build a low-cost hackable eye tracker for research"], "what_it_is": "Pupil is an open source eye tracking platform consisting of applications (Pupil Capture, Player, Service) that work with Pupil Labs wearable eye tracking hardware. It is written in Python and C++, offers a network-based real-time API, and supports runtime plugins for extensibility.", "when_to_avoid": ["you need eye tracking on ordinary webcams without Pupil Labs hardware", "you need arm64-native macOS support or a fully turnkey commercial solution", "you want a cloud-based analysis pipeline rather than local software"], "when_to_choose": ["you use Pupil Labs Pupil Core hardware and need capture/playback software", "you need an open source, extensible eye tracking platform with a real-time API", "you are a researcher conducting gaze or pupillometry studies"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pupil", "repo": "pupil-labs/pupil", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "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:28.457638+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.457638+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:32:14.307967+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9e1ee11c25082dbf27aab26eee88c8a02d1d5525621b728d284752ae6acd84d8", "fetched_at": "2026-08-28T04:05:28.457638+00:00", "kind": "readme", "missing": false, "url": "https://github.com/pupil-labs/pupil"}, {"content_hash": "da0a764924bb741a7852a0b5dc19419efad1bb6aa23794f496c681a86e55454d", "fetched_at": "2026-08-29T11:08:56.922907+00:00", "kind": "homepage", "missing": false, "url": "https://pupil-labs.com"}, {"content_hash": "727a208b78c7102e7ebd5b0e59641fc25fcf8464810610d11a9f8185b8928212", "fetched_at": "2026-08-29T11:08:56.929368+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/about"}, {"content_hash": "084b9162ead005cc9af9bd9c9e3a67f1be46df63a5cd53fb65e3d56d389d9b16", "fetched_at": "2026-08-29T11:08:56.925670+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/products/support/pricing"}, {"content_hash": "58c6fe8503d1ab87afc887272f1a5a574a8867752075465309c2137f4e32f4c3", "fetched_at": "2026-08-29T11:08:56.927451+00:00", "kind": "site_page", "missing": false, "url": "https://pupil-labs.com/releases"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 8}, "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": 4764, "days_push": 16, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}