Create delightful software with Jupyter Notebooks
5.3k
Stars
514
Forks
182
Open issues
30
Contributors
AI Analysis
nbdev is a notebook-driven development platform that transforms Jupyter Notebooks into production-ready Python packages with automatically generated documentation, tests, CI/CD, and PyPI/conda publishing. It serves software engineers and data scientists who want to write literate code in notebooks while maintaining IDE integration and best practices; it is not for developers who prefer traditional source-code-first workflows or who need non-Python ecosystems.
Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.
AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.
nbdev3 turns Jupyter Notebooks into a full Python library development platform with docs, tests, and CI
nbdev is a notebook-driven development system that lets developers write Python libraries entirely within Jupyter Notebooks, then automatically export clean source modules, generate Quarto-powered documentation, run parallel tests, and publish to PyPI/conda — all from the same notebook files. Built by fast.ai (Jeremy Howard et al.), it targets data scientists and ML researchers who already live in notebooks and want to ship production-quality packages without context-switching to a traditional IDE-centric workflow. It has a real and loyal user base within the fast.ai ecosystem and beyond.
Created in November 2019 by Jeremy Howard and Sylvain Gugger at fast.ai, initially to develop fastai itself. Reached v2 with a major rewrite, and shipped nbdev3 in January 2026, migrating config from settings.ini to pyproject.toml per PEP 621.
Growth was driven almost entirely by the fast.ai community and its large following of ML practitioners. The project peaked in visibility during the fast.ai course cycles (2020–2022). Stars have stabilized around 5,300, suggesting the core audience is largely already aware of it. The nbdev3 release in January 2026 is the most significant recent event and may attract renewed attention from Python packaging-standards-conscious developers.
The fast.ai libraries (fastai, fastcore, fasthtml) are themselves built with nbdev, providing strong internal proof-of-concept. A number of community packages in the ML/data science space are known to use nbdev. The existence of nbdev-index (a cross-package hyperlink index) implies a meaningful ecosystem of nbdev-built packages. Precise external production usage numbers are not publicly documented, but adoption within the fast.ai community is well established.
Appears to follow a pipeline architecture: notebooks serve as the single source of truth, with CLI commands (nbdev-export, nbdev-clean, nbdev-prepare, etc.) orchestrating export to .py files, Quarto doc generation, test execution, and git hooks. Likely uses cell-level directives (e.g., #| export) as lightweight markup. Two-way sync is reportedly robust via unique notebook cell IDs. The project itself is built with nbdev, serving as its own best demo.
README documents that tests are written as ordinary notebook cells and run in parallel via a single command. CI is configured via GitHub Actions and a badge is present. Actual coverage percentage is not documented in README.
Last push was 2026-07-04, the same day as the analysis date — the project is actively maintained. The nbdev3 major version shipped in January 2026 shows ongoing architectural evolution. Migration tooling (nbdev-migrate-config) was provided, indicating care for existing users. 514 forks suggests a healthy contributor surface.
ADOPT IF: you are already working in Jupyter Notebooks for ML/data science and want to publish a Python package with minimal tooling overhead — nbdev3 now aligns with modern pyproject.toml standards, reducing a historic friction point. AVOID IF: your team works primarily in IDEs, uses a monorepo, requires standard src-layout conventions for CI/CD compatibility, or needs to onboard contributors unfamiliar with the notebook-as-source paradigm. MONITOR IF: you are open to notebook-driven development but were deterred by nbdev2's non-standard config or the overhead of the v2-to-v3 migration — nbdev3 resolves the former.
Independent dimensions
Mainstream potential
3/10
Technical importance
7/10
Adoption evidence
5/10
- Workflow lock-in: projects built with nbdev are difficult to migrate to standard Python project structures without significant rework, creating long-term dependency on the tool.
- Notebook-as-source remains a niche convention; new contributors or external collaborators unfamiliar with nbdev may find the workflow confusing, potentially limiting community contribution to nbdev-built libraries.
- The nbdev3 breaking change (settings.ini → pyproject.toml) may fragment the existing user base between v2 and v3 during the transition period, at least temporarily.
- Windows support is limited to WSL only, excluding cmd/PowerShell users — a real constraint for enterprise or Windows-first teams.
- The project is tightly coupled to the fast.ai organization; a reduction in fast.ai's organizational focus or resources could materially affect maintenance pace, though current signals are healthy.
nbdev3 will likely consolidate its position as the preferred library-authoring tool within the fast.ai and ML notebook community. Mainstream Python adoption beyond this niche remains unlikely due to the paradigm gap with IDE-centric workflows.
Explore similar
Newsletter
Get analyses like this every Monday
Free weekly digest of the most interesting open-source discoveries.
Languages
Information
- Website
- https://nbdev.fast.ai/
- Language
- Jupyter Notebook
- License
- Apache-2.0
- Last updated
- 11h ago
- Created
- 81mo ago
- Analyzed with
- anthropic/claude-haiku-4-5
Stars over time
Contributors over time
Top 100 contributors only — repos with more will plateau at 100.
Open issues
Bug Report: `nbdev` Parser `IndexError` on `@patch_to` with Keyword Arguments
`great-docs` by Posit Is here!
Interested in Windows support?
nbdev-new does not work as expected
_re_proj in update_proj replaces **all** `name` attributes in pyproject.toml
Top contributors
Recent releases
Similar repos
alishobeiri/thread-notebook
Thread is an AI-powered Jupyter Notebook alternative that integrates an AI...
| Repository | Stars | Week Δ | Language | Score | Updated |
|---|---|---|---|---|---|
|
|
5.3k | — | Jupyter Notebook | 8/10 | 11h ago |
|
|
2.9k | — | TypeScript | 7/10 | 18h ago |
|
|
1.1k | — | JavaScript | 7/10 | 1mo ago |
|
|
1.2k | — | Python | 8/10 | 3w ago |
|
|
1.9k | — | Python | 8/10 | 4d ago |
Jupytext focuses narrowly on notebook-to-text bidirectional sync for version control; nbdev is a full development platform. They solve overlapping but not identical problems — Jupytext users who want docs and packaging still need other tools.
The dominant approach requires separate .py files, docs (Sphinx/MkDocs), and test frameworks. nbdev collapses all of these into notebooks. The tradeoff is convention vs. flexibility — standard tooling has broader toolchain compatibility.
nbdev uses Quarto as its documentation backend. Quarto alone can render notebooks to docs but does not handle packaging, exports, or CI scaffolding. nbdev wraps Quarto into a more opinionated workflow.
Marimo is a reactive notebook environment with reproducibility goals. It does not offer the library-authoring and packaging workflow that nbdev does. Different primary use case.
The standard Python documentation pipeline. Requires docstrings in .py files and a separate doc-build step. nbdev generates docs directly from notebooks, which may be richer but also more opinionated and harder to integrate into non-nbdev projects.