jlabx
Launch JupyterLab with extensions — without touching your project's dependencies. Works with both uv and pixi projects.
uv tool install jlabx
jlabx
Why?
You're working in a repo with a pyproject.toml or pixi.toml, but you want JupyterLab with vim bindings, LSP, collaboration, and other extensions. You can't (or don't want to) add them as project dependencies. jlabx manages extensions separately and injects them at launch time — auto-detecting whether you're in a uv or pixi environment.
Quick start
# Install
uv tool install jlabx
In a project with a pyproject.toml or pixi.toml:
jlabx
Launch a single notebook — imports are auto-detected and mapped to PyPI packages:
jlabx analysis.ipynb
# Persist auto-detected deps as PEP 723 metadata in the notebook
jlabx notebook.ipynb --init-deps
# Force uv even in a pixi project
jlabx --uv
# Manage extensions
jlabx list # Show configured extensions
jlabx add jupyterlab-vim # Add an extension
jlabx remove jupyterlab-vim # Remove an extension
Core extensions (always included)
- jupyterlab
- jupyter-collaboration
- jupyter-lsp
- python-lsp-server
Environment detection
jlabx auto-detects your environment:
| Files in cwd | Mode | How it launches |
|---|---|---|
pixi.toml / pixi.lock |
Pixi | pixi run jupyter-lab |
pyproject.toml |
Python project | uv run --with <extensions> jupyter-lab |
| Neither | Standalone | uvx --from jupyterlab --with <extensions> jupyter-lab |
Config
Extensions are stored in ~/.config/jlabx/config.toml (or $XDG_CONFIG_HOME/jlabx/config.toml). Created automatically on first run.
Documentation
Full docs: https://ianhi.github.io/jlabx/
License
MIT
Metadata
Release files for jlabx 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jlabx-0.2.2.tar.gz | 71.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jlabx-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 80.2 kB
Release files / jlabx-0.2.2.tar.gz
| Download URL | jlabx-0.2.2.tar.gz |
|---|---|
| Size | 71.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2dd3a484104033f9e8afebd6da883066cd3cd3ff8a91110ac38b5e9539a7bc64
|
|
BLAKE2b-256 checksum How to use checksums |
6628847016f18b0f307030e5c3a336e30b0dade5167b0bd4858f3c502d4ae26d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 12, 2026.
Transparency logRelease files / jlabx-0.2.2-py3-none-any.whl
| Download URL | jlabx-0.2.2-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6a9bb7f487103b3deb26ddfc053953d950e319ee95bc1b4b77e4ea6d7cab105
|
|
BLAKE2b-256 checksum How to use checksums |
25e366a2e8cef2b573917b9ae3105f7b6e3c400e648590013ebd2ffea101c246
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 12, 2026.
Transparency log