
Research
SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.
lmkapp
Advanced tools
You can install using pip:
pip install 'lmkapp[cli,jupyter]'
If you are using Jupyter Notebook 5.2 or earlier, you may also need to enable the nbextension:
jupyter nbextension enable --py [--sys-prefix|--user|--system] lmk
Create a dev environment:
python -m venv venv
Install the python package. This will also build the TS package.
pip install -e ".[dev,jupyter,cli,docs,types]"
To build the docs, run:
pnpm build:docs
To run a development server, run:
pnpm dev:docs
When developing your extensions, you need to manually enable your extensions with the notebook / lab frontend. For lab, this is done by the command:
jupyter labextension develop --overwrite .
pnpm build
For classic notebook, you need to run:
jupyter nbextension install --sys-prefix --symlink --overwrite --py lmk
jupyter nbextension enable --sys-prefix --py lmk
Note that the --symlink flag doesn't work on Windows, so you will here have to run
the install command every time that you rebuild your extension. For certain installations
you might also need another flag instead of --sys-prefix, but we won't cover the meaning
of those flags here.
If you use JupyterLab to develop then you can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the widget.
# Watch the source directory in one terminal, automatically rebuilding when needed
pnpm watch
# Run JupyterLab in another terminal
jupyter lab
After a change wait for the build to finish and then refresh your browser and the changes should take effect.
If you make a change to the python code then you will need to restart the notebook kernel to have it take effect.
To update the version, install bump2version and use it to bump the version. By default it will also create a tag.
pip install bump2version
bumpversion <pre|prekind|patch|minor|major>
Build the python package:
pnpm build:python
Check the built assets:
pnpm pypi-check
Publish to the test index:
pnpm pypi-upload-test
Install from test index:
pip install --extra-index-url https://test.pypi.org/simple/ 'lmkapp[jupyter]==<version>'
Publish to real index:
pnpm pypi-upload
Build the npm package:
pnpm build:publish
Publish the npm package:
pnpm npm-publish
FAQs
Stop watching your code run
We found that lmkapp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
An emerging npm supply chain attack that infects repos, steals CI secrets, and targets developer AI toolchains for further compromise.

Company News
Socket is proud to join the OpenJS Foundation as a Silver Member, deepening our commitment to the long-term health and security of the JavaScript ecosystem.

Security News
npm now links to Socket's security analysis on every package page. Here's what you'll find when you click through.