{"adoption": {"forks": 55, "observed_at": "2026-08-28T04:07:06.492863+00:00", "stars": 2641}, "canonical_url": "https://ross.abutalabs.com/products/euporie", "card": {"archived": false, "artifact_type": "application", "description": "Jupyter notebooks in the terminal", "domain": ["developer-tools", "data-science"], "enriched": true, "function": ["developer-tools", "terminal-ui", "gui"], "health_score": 97, "homepage": "https://euporie.readthedocs.io", "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["joouha/euporie"], "name": "joouha/euporie", "platform": ["windows", "cli", "python", "cross-platform"], "pushed_at": "2026-08-24T10:52:27+00:00", "repo": "joouha/euporie", "stars": 2641, "tags": ["jupyter", "notebook", "tui", "ipynb", "sixel", "kitty-graphics", "interactive-computing", "vim-keybindings", "command-line", "linux", "macos"], "topics": ["jupyter-notebook", "jupyter", "python", "prompt-toolkit", "tui", "ipynb", "euporie", "kitty", "sixel", "ipython-notebook", "ipython", "terminal-graphics", "vim", "terminal"], "urls": [], "use_cases": ["edit jupyter notebooks in the terminal", "run jupyter kernels over ssh without a browser", "render ipynb notebooks to the terminal", "interactive python console with rich output", "display images in terminal with sixel or kitty graphics", "use jupyter widgets from the command line", "work with notebooks in a container or terminal-only environment"], "what_it_is": "Euporie is a suite of terminal-based applications for interacting with Jupyter kernels, including a notebook editor, console, preview renderer, and hub client. It supports rich kernel output rendering, terminal graphics (sixel/kitty/iTerm), Jupyter widgets, and Vim/Emacs keybindings entirely within the terminal.", "when_to_avoid": ["you need the full JupyterLab extension ecosystem or browser-based collaboration features", "your terminal lacks graphics support and you need heavy image rendering", "you rely on notebook features like dashboards or JupyterHub multi-user management with a web UI"], "when_to_choose": ["you work with Jupyter notebooks on remote SSH servers or containers without a browser", "you prefer terminal workflows and Vim/Emacs keybindings", "your terminal supports graphics protocols like sixel or kitty and you want inline images", "you want a lightweight alternative to JupyterLab for quick interactive computing"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/euporie", "repo": "joouha/euporie", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/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:07:06.492863+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:06.492863+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:19:04.350003+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7ffa3cf471cdf7e0dc27adea4062eae52726aebcc2aed25dd7f9507e6ec96bba", "fetched_at": "2026-08-28T04:07:06.492863+00:00", "kind": "readme", "missing": false, "url": "https://github.com/joouha/euporie"}, {"content_hash": "f513a8ad9f9de2648f968ec93243e15e1a40af6bbc6df4b2a043ecc36337bd60", "fetched_at": "2026-08-29T10:02:33.013409+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/euporie/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 72}, "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": 1943, "days_push": 9, "days_rel": 191, "gap_med": 9, "n_releases_24m": 20}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}