Personal Knowledge Management extension for JupyterLab Desktop
Project description
JupyterLab PKM Extension
we developed this for our own internal use, and we used Claude to scaffold some parts. We're not likely to develop it any further with any more features, so if there's something you want, fork and develop as you will.
Transform your JupyterLab into a Personal Knowledge Management (PKM) system with wikilinks, backlinks, search, and notebook cell embedding capabilities.
๐ Overview
This extension bridges the gap between computational notebooks and knowledge management, combining:
- Jupyter's computational power for data analysis and code development
- Markdown's simplicity for note-taking and documentation
- PKM features for connecting and organizing knowledge
Perfect for researchers, students, and educators who want to build connected knowledge graphs while maintaining full computational capabilities in JupyterLab Desktop.
โจ Key Features
๐ Wikilinks & Navigation
- Link syntax:
[[Note Name]]or[[file|Display Text]] - Multi-format support: Link to
.md,.ipynb,.csv,.json,.geojsonfiles - Auto-completion: Type
[[for smart file suggestions - Click navigation: Ctrl/Cmd+click to follow links
- Broken link creation: Click red links to create new files
๐ Notebook Cell Embedding
Embed specific cells from Jupyter notebooks:
![[analysis.ipynb#cell:5]] <!-- Full cell (code + output) -->
![[analysis.ipynb#cell:5:code]] <!-- Code only -->
![[analysis.ipynb#cell:5:output]] <!-- Output only -->
Cell Overview Tool: Use PKM: Show Notebook Cell Overview to see all cells with their IDs, types, and previews.
๐ Block Embedding
Reference and embed content from other markdown files:
![[research-notes#methodology]] <!-- Embed by heading -->
![[findings#key-insight]] <!-- Embed by block ID -->
![[summary#results|Key Results]] <!-- With custom title -->
๐ Search & Discovery
- Global search (
Alt+F): Search across all markdown files and notebooks - Backlinks panel (
Alt+B): See which files link to the current file - Real-time results: Live search with context previews
๐ Editing
- Mode toggle (
Alt+M): Switch between edit and preview modes - Auto-preview startup: Files open in preview mode by default
- Floating toggle button: Visual mode indicator
๐ฆ Installation
Using pip (Recommended)
pip install jupyterlab-pkm
Using conda
conda install -c conda-forge jupyterlab-pkm
Prerequisites
- JupyterLab 4.0+
- Python 3.8+
Install from Source
-
Clone the repository:
git clone https://github.com/XLabCU/jupyterlab-desktop-pkm.git cd jupyterlab-pkm
-
Install frontend dependencies and build:
jlpm install jlpm build
-
Install the Python package:
pip install -e .
-
Restart JupyterLab Desktop
Development Installation
For development work:
# Clone and install in development mode
git clone https://github.com/XLabCU/jupyterlab-desktop-pkm.git
cd jupyterlab-pkm
# Install dependencies and build
jlpm install
jlpm build
# Install Python package in development mode
pip install -e .
# Install extension in development mode
jupyter labextension develop . --overwrite
# Start JupyterLab Desktop in watch mode
jlpm watch
๐ Content Organization
Structure your workspace for optimal PKM experience:
workspace/
โโโ start.md # Landing page (auto-opens)
โโโ projects/
โ โโโ project-alpha.md
โ โโโ analysis.ipynb
โ โโโ data.csv
โโโ notes/
โ โโโ daily-notes/
โ โโโ research/
โ โโโ ideas/
โโโ resources/
โโโ methodologies.md
โโโ references.md
๐ฏ Use Cases
๐ Academic Research
- Link literature reviews to data analysis notebooks
- Embed key findings across multiple papers
- Track research progression with connected notes
๐ฉโ๐ซ Teaching & Learning
- Create interconnected lesson materials
- Embed live code examples in documentation
- Build concept maps with executable content
๐ผ Project Documentation
- Connect project plans to implementation notebooks
- Embed analysis results in reports
- Maintain living documentation with computational backing
๐ง Personal Knowledge Management
- Build a second brain with computational capabilities
- Connect ideas across disciplines
- Maintain reproducible research notes
โจ๏ธ Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Alt+M |
Toggle edit/preview mode |
Alt+F |
Open global search |
Alt+B |
Toggle backlinks panel |
Ctrl/Cmd+Click |
Follow wikilink |
๐ ๏ธ Configuration
Startup Behavior
The extension automatically opens start.md in preview mode. Create this file in your workspace root to customize the landing experience.
Auto-save
Files are automatically saved according to JupyterLab's auto-save settings.
Search Indexing
Search indexes all .md and .ipynb files in your workspace directory and subdirectories.
๐ Usage Examples
Basic Note Linking
# Research Project Alpha
## Overview
This project builds on [[previous-research]] and explores [[new-methodology]].
## Data Analysis
See the full analysis in [[analysis.ipynb]] and key findings in [[results-summary]].
## Next Steps
- Review [[literature-review#recent-papers]]
- Update [[methodology#data-collection]]
- Prepare [[presentation-draft]]
Embedding Computational Results
# Monthly Report
## Key Metrics
![[metrics-analysis.ipynb#cell:3:output]]
## Methodology
![[analysis-methods#statistical-approach]]
## Code Implementation
![[implementation.ipynb#cell:5:code]]
Use the command palette command PKM: Show Notebook Cell Overview when viewing a notebook to see cell IDs for embedding.
๐ง Development
Building
jlpm build
Testing
jlpm test
Linting
jlpm lint
Watching for changes
jlpm watch
๐ License
This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.
๐ Acknowledgments
- Built on JupyterLab
- Inspired by Obsidian, Logseq, and Roam Research
- Adapted from the original JupyterLite PKM extension
- Designed for digital humanities education and computational research workflows
๐ Related Projects
- JupyterLite PKM Extension - The original browser-based version
- Obsidian - Dedicated PKM application
- Logseq - Local-first knowledge base
- Tangent Notes - Note-taking with wikilinks
Future?
Jun 3, 2025: Everything we need, we think.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jupyterlab_pkm-0.1.12.tar.gz.
File metadata
- Download URL: jupyterlab_pkm-0.1.12.tar.gz
- Upload date:
- Size: 58.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3120b3b1e84d4a989d7847a2bd33abeed68572c02de77da402f2a0094af48df6
|
|
| MD5 |
3aa5075d79e3f28aa7b2d8413b83f4c2
|
|
| BLAKE2b-256 |
25920c7fd58cf6d35901dfdf0ffe3e1f6a6c013b718ca6a8fd361db51f5e352d
|
File details
Details for the file jupyterlab_pkm-0.1.12-py3-none-any.whl.
File metadata
- Download URL: jupyterlab_pkm-0.1.12-py3-none-any.whl
- Upload date:
- Size: 125.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b4b235f74b5d4d4be1531016598112cd60e4612a7bafd99c3ba65ed5d3c0411
|
|
| MD5 |
cc007f63f326b84bdca185ac6173a150
|
|
| BLAKE2b-256 |
c0f8b72c84c80a233faaf7e4af7969dc6313a278a6282308d938dce1ec63fe11
|